js 正则表达式
var str="Hello world!"; //查找"Hello" var patt=/Hello/g; var result=patt.test(str); document.write("返回值: " + result); //查找 "Runoob" patt=/Runoob/g; result=patt.test(str); document.write("<br>返回值: " + result);
***************************************************************
1.match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g);
输出: ain,ain,ain
*****************************************
-
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
-
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
-
colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
1.正则表达式 模式修正符
i 不区分(ignore)大小写; 例如: /abc/i 可以匹配 abc、aBC、Abc
g 全局(global)匹配 如果不带g,正则过程中字符串从左到右匹配,找到第一个符合条件的即匹配成功,返回 如果带g,则字符串从左到右,找到每个符合条件的都记录下来,知道字符串结尾位置 例如: var str = 'aaaaaaaa' var reg1 = /a/; str.match(reg1) // 结果为:["a", index: 0, input: "aaaaaaaa"] var reg2 = /a/g; str.match(reg2) // 结果为:["a", "a", "a", "a", "a", "a", "a", "a"]
2.去掉最后=后面的内容
var str="idfa=vc=lrt=mac=userId=cityId=geo_lng=nw=s=sv=geo_lat=udid=sign=v=5.2.0"; var reg=/(.*=)[^=]+/; str=str.replace(reg,"$1"); console.log(str);
3.查找最后一个匹配
或许这样应该可以:(.+)(a.b)
那查找最后一个a,就是:(.+)(a)
4.替换最后一个/后面的内容(/[^/]*$)
/about/resources/research/achievements/tts
5.match方法的使用,匹配字符串的值
先介绍参数为普通字符串的使用方式,此时match方法的返回值是存放首次匹配内容的数组。如果没有找到匹配结果,返回null。语法结构:
1 str.match(searchvalue)
参数解析:
(1).searchvalue:必需,规定方法要检索的字符串。
代码实例:
let str="antzone";
console.log(str.match("n"));
代码运行效果:
["n", index: 1, input: "antzone", groups: undefined]
对上述代码运行结果分析如下:
(1).match方法在有匹配结果的时候返回值是一个数组。
(2).数组第一个元素是match方法首次匹配到的子字符串,"antzone"虽然有多个"n",但是返回的数组只存储首次匹配到的"n",如果match方法的参数是全局匹配的正则,将会存储所有的匹配到的子字符串。
=======================================================================================
1.在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。
var str = "Visit Runoob!"; var n = str.search(/Runoob/i);
返回:n=6
replace() 方法使用正则表达式
使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :
var str = document.getElementById("demo").innerHTML;
var str = 'Visit Microsoft!'; var txt = str.replace(/microsoft/i,"Runoob");
正则表达式修饰符
修饰符 可以在全局搜索中不区分大小写:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
如果没有设置全局匹配,那么将替换首次匹配的位置;如果设置了全局匹配,那么将替换所有匹配位置:
// 非全局匹配 '_test_test'.replace(/test/, 'r'); // '_r_test'
// 全局匹配 '_test_test'.replace(/test/g, 'r'); // '_r_r'
2.test() 方法用于检测一个字符串是否匹配某个模式.
如果字符串中有匹配的值返回 true ,否则返回 false。
var str="Hello world!"; //查找"Hello" var patt=/Hello/g; var result=patt.test(str); document.write("返回值: " + result); 打印:true //查找 "Runoob" patt=/Runoob/g; result=patt.test(str); document.write("<br>返回值: " + result);
打印:false