<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JavaScript 正则表达式</title> </head> <body> <p>正则表达式:由一个字符序列形成的搜索模式,可用于所有文本搜索和文本替换的操作;</p> <p>语法:/正则表达式主体/修饰符(可选) --- 例如:var patt = /runoob/i</p> <p>修饰符:</br> i:执行对大小写不敏感的匹配;</br> g:执行 全局匹配(查找所有匹配而非在找到第一个匹配后停止);</br> m:执行多行匹配; </p> <p style="color: red;">在JavaScript中,正则通常用于两个字符串方法:seach()和replace();</p> <h3>search():用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置;</h3> <p>在“Hello World!”中搜索字符串“World”,并显示匹配的起始位置;</p> <button onclick="myFunction()">点我</button><!-- 点击事件 --> <p id="demo1"></p> <h3>search():用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;</h3> <button onclick="myFunctionT()">点我</button><!-- 点击事件 --> <p id="demo2">Hello World!</p> <p>---------------------------------------</p> <p>详细的正则表达式模式、量词、元字符; <a href="https://www.runoob.com/js/js-regexp.html">点击</a></p> <p>---------------------------------------</p> <h3>使用RegExp对象:RegExp 对象是一个预定义了属性和方法的正则表达式对象。</h3> <script type="text/javascript"> function myFunction(){ var str = "Hello World!";//此处空格也算是一个字符串 var a = str.search(/w/i);//修饰符可以同时加多个:/w/ig; (/w/i)可以直接用字符串代替("W"),但是要区分大小写; //var b = str.match(a);//把匹配到的字符串存储到b; document.getElementById("demo1").innerHTML = "起始位置:" + a;//输出结果为6,因为是从0开始检索 } function myFunctionT(){ var str1 = document.getElementById("demo2").innerHTML;//获取demo2标签内的值 var x = str1.replace(/world/i,"Man");//replace检索world并替换为Man;同样的,也可以直接接收字符串("World","Man"); document.getElementById("demo2").innerHTML = "替换后的str1:" + x; } //----------RegExp对象test()方法---------- //test() 方法是一个正则表达式方法;用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。 var res = new RegExp(/c/i);//在字符串中检索有没有e字符,有返回true,没有返回false;也可以直接接收字符串("C"); document.write("test()输出结果为:" + res.test("ABCDEFG") + "</br>");//res.test("ABCDEFG")可以不声明变量,直接写成:/c/i.test("ABCDEFG"); //exec() 方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null; var num = /b/i.exec("AABBCCDD"); document.write("exec()输出结果为:" + num + "</br>");//该函数返回一个数组 document.write("exec()匹配结果是否为数组:" + Array.isArray(num));//判断num的对象类型是否为数组 </script> </body> </html>
原文:https://www.cnblogs.com/zhou0910/p/13121824.html