【发布时间】:2016-11-09 15:15:21
【问题描述】:
我需要优化 JavaScript 项目中的所有正则表达式。我通过简单的搜索找到了所有使用新 RegExp 创建的。问题是创建为文字的那些:/asd/。
我使用的是 PhPStorm,所以正则表达式引擎是 Java。这意味着我们已经向后看。所以我想出了这个:
(?<=[\s=(,\[\?:;|)])\/[^*\n/][^\n/]*[^*]\/
这意味着给我所有看起来像 /.../ 并且前面没有以下之一的内容:\s= (,[?:;|)。
- 正则表达式前面可以有其他内容吗?
- 你有更好的主意吗?
搜索 String 和 RegExp 类使用的方法是不可接受的(exec、replace...),因为在某些项目中查找声明非常困难并且需要大量时间。另外,您可以多次使用同一个正则表达式。
【问题讨论】:
-
你不能用正则表达式有效地解析源代码,只有在某些情况下。因此,向后看几乎没有帮助。您可以尝试使用
/[^\\/]*(?:\\/[^\\/]*)*/,但恐怕会出现“过火”。是的,你可以在它之前添加一个(?<!\\),但仍然会有其他极端情况(理论上)。 -
另外注意在 JavaScript 正则表达式之后可以有标志,g - 全局 i - 不区分大小写 m - 多行 y - 粘性搜索
-
您可以搜索所有使用正则表达式的方法:
exec、test、match、search、replace和split -
我不需要高效解析。唯一严格的条件是不能错过任何一个。我希望尽可能少的误报。
-
搜索 exec、test、match、search、replace 和 split 也会给我新的 RegExp 形成的正则表达式,我必须去文件查看声明。在 JavaScript 中,这对于某些项目来说几乎是不可能的。
标签: javascript regex text-parsing string-parsing