正则表达式
预定义字符类.(点好): 匹配除了换行符和其他Unicode行终止符(如回车符)之外的任意字符,等价于[^nr] w: 匹配任何ASII单字字符,等价于[a-zA-Z0-9_] W: 匹配任何非ASII单字字符,等价于[^a-zA-Z0-9_] s: 匹配任何Unicode空白符,等价于[tnx0Bfr] 贪婪匹配概念:如星号(*)元字符在执行匹配时,先看整个字符串是否匹配,如果不匹配则去掉该字符串中的最后一个字符,并再次尝试。 1.?、{n}和{n,m}重复类 这三个都具有弱贪婪性,主要表现在贪婪性具有有限性。对于?匹配,在选择匹配还是不匹配时,如果条件允许,它总是会选择匹配而不是不匹配;{n,m}在条件允许的情况下,匹配m次,而不是n次。 正则式的贪婪性是在遵循匹配条件基础上尽可能占有更多的字符,而不是随意占用。 2.*、+和{n,}重复类 这三个具有强贪婪性,这种贪婪表现为贪婪的无限性
正则表达式是有贪婪性的,它总是与最长的长度匹配,而且越是排在左侧的重复类匹配符优先级就越高。 var s = "<html><head><title></title></head><body></body></html>"; var r = /(<.*>)(<.*>)/ var a = s.match(r); alert(a[1])//<html><head><title></title></head><body></body> alert(a[2])//</html> 上面的演示说明,当多个重复类并列子在一起时,左侧重复类具有较大的优先权,并尽可能的占有更多的符合条件的字符。 惰性匹配惰性匹配它将先查看字符串中的第一个字符是否匹配,如果匹配条件不够,就读入下一个字符。如果还是匹配不足够,惰性匹配会继续从字符串中读取字符串直到发现匹配或者整个字符串都检查过也没有匹配为止。惰性匹配只需要在重复类后面添加问号(?)就可以了。问号必须放在重复字符串后面。
支配匹配(浏览器兼容不强)这个是另一种类型的匹配模式,它的算法是:只匹配整个字符串。如果整个字符串不能匹配,则会自动放弃匹配,不再执行迭代以求进一步尝试。支配匹配只需要在重复类后面添加加号(+)即可。 高级匹配模式1.分组:就是通过用小括号来包含一系列字符、字符类,或者重复类量词,以实现处理各种特殊的字符序列
var s = "ab=21,bc=45,cd=43"; var r = /(w+)=(d+)/; var a = s.match(r); ["ab=21","ab","21"]
var s = "<h1>title</h1><p>text</p>" var r = /(</?w+>).*1/g; var a = s.match(r);//["<h1>title</h1>","<p>text</p>"] 非引用型分组正则表达式分组会占用一定的系统资源,在较长的正则表达式中,存储反向引用会降低匹配速度。创建非引用型分组的方法是,在括号的后面分别加上一个问号和冒号。(?:w*?) 声明正则表达式用来声明正则表达式在什么条件下才能匹配,或者不在什么条件下才会匹配,这种声明包括正前向声明和反向前声明两种模式
var s = "a:123 b=345"; var r = /w*(?==)/; var a = s.match(r);//["b"]
var s = "a:123 b=345"; var r = /w*(?!=)/; var a = s.match(r);//['a'] 静态
var s = "JavaScript,not Javascript"; var r = /(Java)Script/gi; var a = r.exec(s); RegExp.input//"JavaScript,not Javascript" RegExp.leftContext//空字符串 RegExp.rightContext//",not Javascript" RegExp.lastMatch//"JavaScript" RegExp.lastParen//"Java" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |