如果要全局匹配
(1)语法
var patt=new RegExp(pattern,modifiers); 或 var patt=http://www.mamicode.com/pattern/modifiers;
好比:var re = new RegExp("\\w+","g");
var re = /\w+/g;
(2)修饰符
i 执行对巨细写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后遏制)。
m 执行多行匹配。
(3)转义
"\w" 是错的,正确的应该是"\\w"
2、RegExp 东西属性
global RegExp 东西是否具有标识表记标帜 g。
ignoreCase RegExp 东西是否具有标识表记标帜 i。
multiline RegExp 东西是否具有标识表记标帜 m。
lastIndex 一个整数,,标示开始下一次匹配的字符位置。(上一次匹配文本之后的第一个字符的位置)
(1)不具有标识表记标帜 g 和不暗示全局模式的 RegExp 东西不能使用 lastIndex 属性。
(2)如果在告成地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。
(3)当要领 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。
source 正则表达式的源文本,不包孕i、g、m。/
3、RegExp 东西要领
compile 在 1.5 版本中已废弃。 编译正则表达式。 (不掌握)
exec 检索字符串中指定的值。返回一个数组 或 null。数组中元素第一个是匹配到的值,后面的都是子表达式的值(如果存在子表达式)。
(1)如果没有子表达式,那么返回数组只有一个元素。
如果有了子表达式,那么从第二个元素开始为依次匹配到的字表达式功效的值。
(2)一次只匹配一个值,如果要全局匹配,需要循环挪用exec。
var str = "Visit W3School, W33Sdf45c32h1ool is a place to study web techno34logy.";
var patt = new RegExp("\\d{2}","g");
var result;
while ((result = patt.exec(str)) != null) {
document.write("result = "+result +"
lastIndex = "+patt.lastIndex);
document.write("<br />");
}
(3)循环中重复地挪用 exec() 要领是获得全局模式的完整模式匹配信息独一的要领。
test 检索字符串中指定的值。返回 true 或 false。 等价于:(pattern.exec(str) != null)。
一般校验字段都使用开始和结束符来做全局匹配。好比/^\d{11}$/
全局匹配g的使用:每执行一次test要领 lastIndex会转变- 貌似没啥感化。
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");
for(i = 0; i < 4; i++) {
document.write(patt1.test(str)+" - ");
document.write("index now at: " + patt1.lastIndex);
document.write("<br />");
}
toString 返回正则表达式的字符串。
4、String 东西的相关要领
search 找到第一个匹配的字符串,返回子串的起始位置索引或-1。(不执行全局匹配,它将忽略标识表记标帜g)
match 找到一个或多个正则表达式的匹配,返回匹配到的数组或null。 (默认只匹配一次,全局匹配设置修饰符g)
regexp 必须。规定要匹配的模式的 RegExp 东西。如果该参数不是 RegExp 东西,则需要首先把它通报给 RegExp 结构函数,将其转换为 RegExp 东西。
如:str.match(/aa/i);
str.match(new RegExp(/aa/i);全局匹配aa
str.match("/aa/i"); 注意:这里匹配的是匹配/aa/i,会转换成RegExp东西,可以看出没法设置修饰符i、g。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31109.html