JavaScript RegExp 基础详谈
说明:嵌套分组从外向内获取 1 var str = 'abc'; 2 var pattern = /(a?(b?(c?)))/; 3 pattern.test(str); 4 console.log(RegExp.$1) //-> abc 5 console.log(RegExp.$2) //-> bc 6 console.log(RegExp.$3) //-> c 3.8 前瞻 对于人的习惯而言,我们认为我们在看一段话的顺序是从前到后的阅读顺序,但是对于计算机而言, · (?=) 正向前瞻 说明:“正向前瞻”是根据后续内容是否符合匹配条件来返回匹配的结果。 1 var str = 'google'; 2 var pattern = /goo(?=gle)/; 3 console.log(pattern.exec(str)[0]); // -> goo 从示例我们可以看出,goo是我们要匹配的结果,而(?=gle)则是后续内容的判断条件,一旦字符串中有符合goo后续为gle的字符串,那么就返回匹配结果。goo。 · (?!) 负向前瞻 说明:“负向前瞻”是根据后续内容是否不符合条件来返回匹配的结果。 1 var str = 'google'; 2 var pattern1 = /goo(?!gle)/; 3 var pattern2 = /goo(?!ogl)/; 4 pattern1.test(str) // -> false 因为gle是符合goo的后续内容的,所以返回false,条件不成立。 5 pattern2.test(str) // -> true 因为ogl不是goo的后续内容,所以返回true,条件成立。 * 前瞻是一种零宽度断言匹配。 世界本来没有路,只是人走多了,自然就有了路,同样的道理,零宽度断言,虽然听上去怪怪的,还有点反人类的感觉,
示例: 1 var str = 'find123'; 2 var pattern = /(?=find)d+/; 3 alert(pattern.test(str)) // -> false 就如我们前面说到的那样,前瞻是一种零宽度匹配,而零宽度的特点概要来说,就是不捕获匹配内容,不改变匹配位置。 1 var str = 'abcfind123'; 2 var pattern = /abc(?=find)findd+/; 3 alert(pattern.test(str)) // -> true 这个示例的返回结果为true,让我们仔细分析以下,首先,从左向右匹配,位置0,位置1, 3.9 运算符 相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:
3.10 其它 · 控制字符匹配 cX 1 var pattern = '', 2 str = '', 3 c = '', 4 r = ''; 5 for(var i=0;i<255;i++){ 6 str+=String.fromCharCode(i); 7 } 8 for(var i=65;i<90;i++){ 9 c = String.fromCharCode(i); 10 pattern = new RegExp('c'+c); 11 r = str.match(pattern); 12 r?console.log(r,c,pattern):''; 13 } · 修饰符m对位置元字符的影响。 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |