JavaScript正则表达式搭配字符串数组字面量
  • 作者:admin
  • 发表时间:2020-11-03 07:50
  • 来源:未知

第一次碰到这个问题, 是大约两年前写代码高亮, 从那时候的解决方法到现在一共有三代, 嘎嘎嘎. 感觉還是算越变越好的.

第一代:

//那个时候自身正则表达式还算不上很熟练, 都没有(?:...)这类习惯性, 是以找寻完毕冒号为通道写成的这一正则表达式. 构思错乱, 也存有不正确.
//例如像字面量 "abc\\\"", 则会搭配为 "abc\\\", 而恰当的結果应该是 "abc\\\"".
var re = /唐山市网络科技公司('('|.*?([^\\]'|\\\\'))|"("|.*?([^\\]"|\\\\")))/g;

第二代:

//这一搭配实际上和第一代构思基本一致, 也是找寻完毕冒号, 根据给\\加上*解决了第一代的bug.
var re = /(['"])(?:.*?[^\\](?:\\\\)*)?\1/g;

第三代:

//老实巴交说第三代是昨晚出卷的情况下忽然想出去的(之后又改动过), 适用几行字符串数组字面量, 构思也拥有很大的变化, 从搭配完毕冒号变味儿了搭配正中间內容.
var re = /(['"])(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*?\1/g

这儿有一个正则表达式里十分常见的方法, 暂且称作 “占领”, 在例如/a|./那样的正则表达式里, 越靠前越先搭配, 根据 “占领” 一些标识符, 能够绕开许多 不便. 说起来一些抽象性, 在上面这一事例里, /\\[\s\S]/就可以很当然地抢得 \” 那样的转义字符, 因此 无须担忧转义字符中的 ” 给搭配导致危害. 它是部分的 “占领”, 也有更高范畴的, 例如注解里的字符串数组或是字符串数组里的注解, 要是在同一个正则表达式中, 把有关搭配都载入, 则一定是先碰到的优先选择. 如 /(注解正则表达式)|(字符串数组正则表达式)/g, 能够先根据那样的方法, 把內容搭配出去, 再开展进一步分辨解决.

尽管很有可能针对大部分人而言, 用途并不大, 但万一呢? Best wishes~

来源于:脚本之家

连接:https://www.jb51.net/article/184339.htm