正则表达式之位置匹配
m#o#n#
二者的学名分别是positive lookahead 和 negative lookahead。中文意思分别为正向先行断言和负向先行断言。ES5之后的版本,会支持positive lookbehind 和 negative lookbehind。意思是正向后行断言和负向后行断言。具体是 let result = 'lemon'.replace(/(?<=l)/g,'#'); console.log(result); // => l#emon 表示该位置之前的字符要匹配 let result = 'lemon'.replace(/(?<=l)/g,'#'); console.log(result); // => #le#m#o#n# 表示该位置之前的字符不能匹配 其实 位置的特性对于位置的理解,我们可以将其理解成空字符 'lemon' === '' + 'l' + 'e' + 'm' + 'o' + 'n'+ ''; 也可以写成如下: 'lemon' === '' + 'lemon' + ''; 因此,把 let result = /^^lemon$$/.test('lemon'); console.log(result); // => true 甚至可以写成更复杂的: let result = /(?=le)^^le(?=w)mon$bb$/.test('lemon'); console.log(result); // => true 也就是说字符之间的位置,可以写成多个。
小结本节介绍了位置的匹配,需要诸君理解 本文中的正则表达式转化为关系图来展示的工具是Regexper 此文主要参考和学习了老姚的《JavaScript 正则表达式迷你书》,内容清晰明了,在此非常感谢老姚的 free精神,致敬。 参考文献[1] 老姚 著《JavaScript 正则表达式迷你书》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |