如何在JavaScript中的正则表达式中包含内联注释

时间:2012-11-16 20:29:07

标签: javascript regex comments emulation inline-code

当传递给RegExp构造函数的字符串时,内联注释有效:

RegExp("foo"/*bar*/).test("foo")

但不是表达式。 JavaScript中是否有任何等效或替代方法可以为RegExp对象模拟x-mode

2 个答案:

答案 0 :(得分:10)

Javascript既不支持x修饰符,也不支持内联评论(?#comment)See here.

我想,你能做的最好的事情就是使用RegExp构造函数并在e单独的字符串中写入每一行并连接它们(用字符串之间的注释):

RegExp(
    "foo" + // match a foo
    "bar" + // followed by a bar
    "$"     // at the end of the string
).test("somefoobar");

答案 1 :(得分:2)

除了使用零长度子表达式之外,它是不可能的。 “评论”的例子:

/[a-z](?!<-- Any letter)/

(?!..)是否定的前瞻。如果前一个括号后面没有字符串,则匹配。由于(?!)之间的事物是真正的常规(子)表达式,除非使用反斜杠进行转义,否则不能使用任意字符

另一种方法是使用积极的预测:

/[a-z](?=|<-- Any letter)/

此预测将始终匹配,因为显然a-z后面跟一个空字符串。