【发布时间】:2012-04-30 00:55:36
【问题描述】:
是否存在全面的正则表达式,当应用于 JavaScript 源代码时,将匹配所有有效的字符串文字(例如 "say \"Hello\"")和正则表达式文字(例如 /and\/or/)?表达式必须涵盖所有边缘情况,包括换行符和转义序列。
或者,有人知道用于匹配字符串和正则表达式文字之外模式的正则表达式吗?
我的目标是实现一个简单的 JavaScript 语法扩展,允许预处理器扩展分隔符中的宏(例如 {{@foo.bar}} 或 #@foo.bar#)。但是,我希望宏只在字面量的之外进行处理。
目前,我正在尝试仅使用字符串替换来完成此任务,而无需扩充现有的 JavaScript 词法分析器/解析器。
这个 JavaScript 预处理器本身将在 JavaScript 中实现。
【问题讨论】:
-
我认为这对于正则表达式来说太过分了。考虑
var foo = "//" // /"(?:\\.|[^"])*"/。字符串、cmets 和正则表达式文字在哪里开始和结束? -
@TimPietzcker,我认为您的评论是正确答案。你无法在这里实现一个成熟的解析器。如果您发表评论作为答案,我会接受。 (我最终决定不使用宏,只使用特定的变量命名约定,所以我使用的是纯 JavaScript 语法。)
标签: javascript regex macros lexer