【发布时间】:2014-02-04 11:08:39
【问题描述】:
我正在尝试匹配双引号、单引号或正则表达式斜杠之间的任何内容,基本上是任何未被 javascript 标记为字符串或正则表达式的内容。到目前为止,我想出的是:
/"[^\\"\n]*(\\"[^\\"\n]*)*"|'[^\\'\n]*(\\'[^\\'\n]*)*'|\/[^\\\/\n]*(\\\/[^\\\/\n]*)*\//
但是你可以看到这有几个问题here
http://goo.gl/4Yn9pR
基本上这不应该匹配1+2/3+4/5,因为它不是一个正则表达式。另外Dont match "Match here\\" Dont match" 应该匹配第一部分而不是第二部分(单引号和正则表达式也是如此)
这应该怎么写?
编辑:如果使用正则表达式无法区分1+2/3+4/5、/*comment*/ 和/regex/,我将如何解决Dont match "Match here\\" Dont match" 问题
【问题讨论】:
-
您无法仅使用正则表达式区分
1+2/3+4/5、/*comment*/和/regex/- 您需要一个合适的解析器。 -
@thg435 已注明,见编辑
-
可以将 JavaScript 字符串文字与 JavaScript 的 RegExp 进行匹配。见这里:stackoverflow.com/questions/13799773/…(我是根据规范写的,所以保证不会过度接受或过度拒绝)。保证匹配一个有效的 JS 字符串,但不保证正确匹配任意 JS 源代码中的所有 JS 字符串(例如注释中的类似字符串的序列)。
标签: javascript regex