JavaScript正则表达式如何匹配字符串字面量的方法
这篇文章主要讲解了“JavaScript正则表达式如何匹配字符串字面量的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript正则表达式如何匹配字符串字面量的方法”吧!
第一次遇到这个问题, 是大概两年前写代码高亮, 从当时的解决方案到现在一共有三代, 嘎嘎. 觉得还是算越来越好的.
第一代:
//那个时候自己正则还不算很精通,也没有(?:...)这种习惯,是以寻找结束引号为入口写出的这个正则.思路混乱,也存在错误. //比如像字面量"abc\\\"",则会匹配为"abc\\\",而正确的结果应该是"abc\\\"". varre=/('('|.*?([^\\]'|\\\\'))|"("|.*?([^\\]"|\\\\")))/g;
第二代:
//这个匹配其实和第一代思路基本相同,也是寻找结束引号,通过给\\添加*解决了第一代的bug. varre=/(['"])(?:.*?[^\\](?:\\\\)*)?\1/g;
第三代:
//老实说第三代是昨天晚上出题的时候突然想出来的(后来又修改过),支持多行字符串字面量,思路也有了较大的转变,从匹配结束引号变味了匹配中间内容. varre=/(['"])(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*?\1/g
这里有一个正则里非常常用的技巧, 姑且称之为 “抢占”, 在诸如/a|./这样的正则里, 越靠前越先匹配, 通过 “抢占” 一些字符, 可以避开很多麻烦. 说起来有些抽象, 在上面这个例子里, /\\[\s\S]/就可以很自然地抢到 \” 这样的转义字符, 所以不必担心转义字符中的 ” 给匹配造成影响. 这是局部的 “抢占”, 还有更大范围的, 比如注释里的字符串或者字符串里的注释, 只要在同一个正则中, 把相关匹配都写入, 则一定是先遇到的优先. 如 /(注释正则)|(字符串正则)/g, 可以先通过这样的方式, 把内容匹配出来, 再进行进一步判断处理.
虽然可能对于多数人来说, 用处不大, 但万一呢? Best wishes~
感谢各位的阅读,以上就是“JavaScript正则表达式如何匹配字符串字面量的方法”的内容了,经过本文的学习后,相信大家对JavaScript正则表达式如何匹配字符串字面量的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
推荐阅读
-
Notepad++ 隐藏功能揭秘:正则表达式替换与多文件批量处理技巧
-
Notepad++ 正则表达式实战:批量替换与数据清洗技巧
-
Notepad++ 多文件搜索:正则表达式与目录批量处理技巧
-
正则指引(第2版)
-
密码格式验证的常用正则表达式有哪些
密码格式验证的常用正则表达式有哪些这篇文章主要为大家展示了“密码格...
-
正则替换如何实现输入框只能有数字、中英文逗号
正则替换如何实现输入框只能有数字、中英文逗号这篇文章将为大家详细讲...
-
正则表达式匹配原理之逆序环视的示例分析
正则表达式匹配原理之逆序环视的示例分析这篇文章主要为大家展示了“正...
-
正则如何实现替换换行符和把br替换成换行符
正则如何实现替换换行符和把br替换成换行符这篇文章主要介绍了正则如...
-
如何使用正则匹配电话号手机号邮箱网址
如何使用正则匹配电话号手机号邮箱网址这篇文章主要介绍了如何使用正则...
-
怎么用正则批量去除Teleport Pro整站下载文件冗余代码
怎么用正则批量去除TeleportPro整站下载文件冗余代码这篇...