JavaScript中的正则表达式规则与perl语言的完全一致。按照perl语言的方式书写即可。
但是在操作方法上有所不同:
正则表达式方法:test(),exec()
String对象方法:match(),search(),replace(),split()
=========================================
test()方法:
用法:regexp对象实例.test(字符串) 例如var regstr=/^abc/; regstr.test(str)
返回值:如果满足regexp对象实例中定的正则规则,返回true,否则返回false;
exec()方法:
用法:regexp对象实例.exec(字符串)
返回值:如果exec方法没有找到匹配,则它返回null。如果它找到匹配,则exec方法返回一个数组,并且更新全局RegExp对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志(g)的match方法。如果为正则表达式设置了全局标志,exec从以lastIndex的值指示的位置开始查找。如果没有设置全局标志,exec忽略lastIndex的值,从字符串的起始位置开始搜索。
match()方法:
用法:string对象.match(regexp对象) 例如var str=" abcdefesg" ; str.match(/abc/);
返回值:如果match方法没有找到匹配,返回null。如果找到匹配返回一个数组并且更新全局RegExp对象的属性以反映匹配结果。
备注:match和exec一个很明显的差别是设置了全文搜索参数g后,它返回的数组不再是一个元素,而是所有的元素,第一个匹配结果数组基数为0,第二个为1,以此类推。
属性:同exec,match也有index,lastIndex,input三个属性,意义也同exec
search()方法:
用法:string对象.search(regexp对象)
返回值:search方法指明是否存在相应的匹配。如果找到一个匹配,search方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回-1。
注意:返回的只是与正则表达式查找内容匹配的第一个子字符串的位置。所以用全局搜索参数就没有意义了。
replace()方法:
用法:string对象.replace(regexp对象|字符串," 替换的字符串" )
返回值:如果设置了全文搜索,则全部满足的都将被替换;否则只替换第一个。返回替换后的字符串。
注意:replace中还可以接受字符串,但只替换第一个满足条件的字符串。
split()方法:
用法:string对象.split([分割符(可以是字符串或正则表达式)[,限制输出数组个数]])
返回值:返回string对象被分割的数组
注意:string对象不会被split方法修改。分割符是可选项,可以是字符串或正则表达式对象,它标识了分割字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。最后一个选项限制输出数组个数也是可选项,该值用来限制返回数组中的元素个数。
另外,split本身就带有全文匹配的特性,所以可用可不用g参数。