JavaScript正则表达式如何匹配字符串字面量的方法

  介绍

这篇文章主要讲解了“JavaScript正则表达式如何匹配字符串字面量的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”JavaScript正则表达式如何匹配字符串字面量的方法”吧!

第一次遇到这个问题,是大概两年前写代码高亮,从当时的解决方案到现在一共有三代,嘎嘎。觉得还是算越来越好了的。

第一代:

//那个时候自己正则还不算很精,通,也没有(?…)这种习惯,,是以寻找结束引号为入口写出的这个正则只思路混乱,,也存在错误。//比如像字面量,“abc \ \ \““,,则会匹配为,“abc \ \ \“,,而正确的结果应该是,“abc \ \ \““。   var  re =,/(& # 39; (& # 39; | * ? ([^ \ \] & # 39; | \ \ \ \ & # 39;)) |“(“| * ? ([^ \ \]“| \ \ \ \“)))/g;

第二代:

//这个匹配其实和第一代思路基本相同,,也是寻找结束引号,,通过给\ \添加*解决了第一代的bug。   var  re =,/((& # 39;“)) (?: . * ? [^ \ \] (?: \ \ \ \) *) ? \ 1/g;

第三代:

//老实说第三代是昨天晚上出题的时候突然想出来的(后来又修改过),,支持多行字符串字面量,,思路也有了较大的转变,,从匹配结束引号变味了匹配中间内容。   var  re =,/((& # 39;“)) (?: \ \ (?: \ r \ n | [\ s \ s]) | [^ \ \ \ r \ n]) * ?\ 1/g

这里有一个正则里非常常用的技巧,姑且称之为“抢占”,在诸如/|。/这样的正则里,越靠前越先匹配,通过“抢”占一些字符,可以避开很多麻烦。说起来有些抽象,在上面这个例子里,/\ \ [\ s \ s]就可以很自然地抢到\”这样的转义字符,所以不必担心转义字符中的“给匹配造成影响。这是局部的“抢占”,还有更大范围的,比如注释里的字符串或者字符串里的注释,只要在同一个正则中,把相关匹配都写入,则一定是先遇到的优先。如/(注释正则)|(字符串正则)/g,可以先通过这样的方式,把内容匹配出来,再进行进一步判断处理。

虽然可能对于多数人来说,用处不大,但万一呢?最好的祝福~


感谢各位的阅读,以上就是“JavaScript正则表达式如何匹配字符串字面量的方法”的内容了,经过本文的学习后,相信大家对JavaScript正则表达式如何匹配字符串字面量的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

JavaScript正则表达式如何匹配字符串字面量的方法