找到以某个字符串开头的字符串
var myReg=/^(abc)/gim;
如果不加m,那么只找一行,而加了m可以找到每行中以该字符串开头的匹配文本。
如:
abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc
sdfasd
f
asd
f
asd
abcadaabcadfads
不加m只能找到一次,加了能找到两次。
String与正则表达式相关的方法
(1)test()方法
若找到则返回true,否则返回false。
测试如下:
function test1(){ var con=content.innerText; window.alert(con); var reg=/abc/gi; if(reg.test(con)){ window.alert("有abc"); }else{ window.alert("没有abc"); } }
用法是
reg.test(con)
而不是
con.test(reg);
支持正则表达式的String对象的方法。
search()方法
返回第一个匹配到的文本的起始位置。
var str="visit W3School!"; window.alert(str.search(/W3School/));
输出:6.
(2)match()
它使用正则表达式模式对字符串执行搜索,并返回一个包含搜索结果的数组。
function test2(){ var con=content.innerText; var myreg=/abc/gi; res=con.match(myreg); for(var i=0;i<res.length;i++){ window.alert(i+" "+res[0]); } }
(3)replace()
function test3(){ var con=content.innerText; var myReg=/(\d){4}/gi; //把四个数,换成 var newCon=con.replace(myReg,"这里原来是四个数"); content.innerText=newCon; }
函数的返回值是替换后的新字符串。
(4)split(regExp)
该方法可以把字符串按照正则表达式来分割。
RegExp对象的属性
1. index 是当前表达式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。
2. lastindex 是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数。
index是静态属性,直接用类名调用。
3.input 返回当前所作用的字符串
4.leftContext 是当前表达式模式最后一个匹配字符左边的所有内容。
5.rightContext 是当前表达式模式最后一个匹配字符串右边的所有内容。
function test4(){ var con=content.innerText; var myReg=/(\d){4}/gi; while(res=myReg.exec(con)){ window.alert("index="+RegExp.index+" left="+RegExp.leftContext+" right="+RegExp.rightContext); } }
js的RegExp的反向
js引擎在匹配的时候,会把各个子表达式的内容捕获到内存暂存。
子表达式和捕获,反向引用的概念。
function test5(){ var con=content.innerText; var myReg=/(\d)(\d)\2\1/gi; while(res=myReg.exec(con)){ window.alert(res[0]); } }
请思考:aabbccdd找出这样的数。
var myReg=/(\d)\1(\d)\2(\d)\3(\d)\4/gi; while(res=myReg.exec(con)){ window.alert(res[0]); }
匹配:五个数字加上一个-然后是如111222333这样的连续重复三次的9个数字
var myReg=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi; while(res=myReg.exec(con)){ window.alert(res[0]); }
元字符