当传递给RegExp构造函数的字符串时,内联注释有效:
RegExp("foo"/*bar*/).test("foo")
但不是表达式。 JavaScript中是否有任何等效或替代方法可以为RegExp对象模拟x-mode?
答案 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
后面跟一个空字符串。