8

当字符串传递给 RegExp 构造函数时,内联注释起作用:

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

但不带表情。JavaScript 中是否有任何等效或替代方法来模拟RegExp 对象的x 模式?

4

2 回答 2

10

Javascript 既不支持x修饰符,也不支持内联注释(?#comment)看这里。

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

RegExp(
    "foo" + // match a foo
    "bar" + // followed by a bar
    "$"     // at the end of the string
).test("somefoobar");
于 2012-11-16T20:32:02.273 回答
2

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

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

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

另一种方法是使用积极的前瞻:

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

这种前瞻将始终匹配,因为显然a-z后面还有一个空字符串。

于 2012-11-16T20:31:42.870 回答