本文以最简单的代码来带小白入门,正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。
1.定义正则表达式:
a.普通方式:varreg=/表达式/附加参数
附件参数:
g:代表可以进行全局匹配。i:代表不区分大小写匹配。m:代表可以进行多行匹配。
上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。例子:varreg=/a*b/;varreg=/abc+f/g;
b.构造函数方式:varreg=newRegExp(“表达式”,”附加参数”);
例子:varreg=newRegExp(“a*b”);varreg=newRegExp(“abc+f”,”g”);
两者区别:
普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:varreg=newRegExp(document.forms[0].exprfiled.value,”g”);
2.表达式操作
1)表达式操作,在这里是指和表达式相关的方法,我们将介绍六个方法。2)表达式对象(RegExp)方法:
1exec(str),返回str中与表达式相匹配的第一个字符串,而且以数组的形式表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有()中的匹配字符串,例如:varregx=//d+/;varrs=regx.exec(“ddf53”);返回的rs值为:{}varregx2=newRegExp(“ab(/d+)c”);varrs2=regx2.exec(“abc44”);返回的rs值为:{abc,}另外,如果有多个合适的匹配,则第一次执行exec返回一个第一个匹配,此时继续执行exec,则依次返回第二个第三个匹配。例如:varregx=/user/d/g;varrs=regx.exec(“ddduser1dsfuser2dd”);varrs1=regx.exec(“ddduser1dsfuser2dd”);则rs的值为{user1},rs的值为{rs2},当然注意regx中的g参数是必须的,否则无论exec执行多少次,都返回第一个匹配。后面还有相关内容涉及到对此想象的解释。
2test(str),判断字符串str是否匹配表达式,返回一个布尔值。例如:varregx=/user/d+/g;varflag=regx.test(“user12dd”);flag的值为true。
3)String对象方法
1match(expr),返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配例子:varregx=/user/d/g;varstr=“user13userddduser”;varrs=str.match(regx);rs的值为:{user1,user3}
2search(expr),返回字符串中与expr相匹配的第一个匹配的index值。例子:varregx=/user/d/g;varstr=“user13userddduser”;varrs=str.search(regx);rs的值为:0
3replace(expr,str),将字符串中匹配expr的部分替换为str。另外在replace方法中,str中可以含有一种变量符号$,格式为$n,代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配)。例子:varregx=/user/d/g;varstr=“user13userddduser”;varrs=str.replace(regx,”00”);rs的值为:userddd例子2:varregx=/u(se)r/d/g;varstr=“user13userddduser”;varrs=str.replace(regx,”$1”);rs的值为:se3userdddse45对于replace(expr,str)方法还要特别注意一点,如果expr是一个表达式对象则会进行全局替换(此时表达式必须附加参数g,否则也只是替换第一个匹配),如果expr是一个字符串对象,则只会替换第一个匹配的部分,例如:varregx=“user”varstr=“user13userddduser”;varrs=str.replace(regx,”00”);rs的值为:userddduser
4split(expr),将字符串以匹配expr的部分做分割,返回一个数组,而且表达式是否附加参数g都没有关系,结果是一样的。例子:varregx=/user/d/g;varstr=“user13userddduser”;varrs=str.split(regx);rs的值为:{3userddd,45}