扫码关注官方订阅号
我在编写一个代码高亮的插件,求一个正则表达式,把 javascript 的正则形式(即:/abc/g 的正则形式)识别出来。 例如,把【var rstr = /(['"]).*?\1/gm;】中的【/(['"]).*?\1/gm】识别出来。 多谢啦!
【var rstr = /(['"]).*?\1/gm;】
【/(['"]).*?\1/gm】
\/.+\/[gim]*
(?<!\/)\/(?:[^\/\\\n\r]|\\.)+\/[a-z]*
用了个零宽度正回顾后发断言 就是前面的(?<!\/), 表示匹配块前面不能有/,避免匹配到注释//abc/的情况
零宽度正回顾后发断言
(?<!\/)
/
//abc/
测试 Python
>>> reg = '(?<!\/)\/(?:[^\/\\\n\r]|\\.)+\/[a-z]*' >>> str = 'var rstr = /([\'"]).*?\\1/gm; //abc/' >>> re.findall(reg, str) ['/([\'"]).*?\\1/gm']
如果是用Javascript,忽略吧,Javascript不支持后发断言,要避免匹配到注释,就只能优先匹配是否是注释
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
用了个
零宽度正回顾后发断言就是前面的(?<!\/), 表示匹配块前面不能有/,避免匹配到注释//abc/的情况测试 Python
如果是用Javascript,忽略吧,Javascript不支持后发断言,要避免匹配到注释,就只能优先匹配是否是注释