网站搜索

javascript - 是否可以用正则表达式解析正则字符串


只是出于好奇,是否有可能用一个正则表达式解析一个完全由随机但有效的正则表达式组成的字符串?

给定正则表达式字符串:

<[^>]*>\xA9

解析为:

<[^>]*>
\xA9

其中第一个匹配 html,第二个匹配版权符号。

编辑:我在 SO 上找到一个类似的问题,有人声称这可能是可行的。在这里,我指的是仅在 JavaScript ECMA-262 中的正则表达式。

答案#1

不,不可能:正则表达式语言允许使用括号表示捕获组和非捕获组、环视等,其中括号必须平衡。即使在理论上,也不可能编写一个正则表达式来验证给定字符串中的括号是否平衡。如果没有这种能力,你就无法知道一个正则表达式在哪里结束,另一个从哪里开始。

一般来说,正则表达式语法相对复杂。要了解它到底有多复杂,可以看看 Java 的 Pattern 类源码中的解析器。