当/ patt / version工作时,为什么RegExp版本不能正常工作? (JavaScript)的

时间:2012-01-22 03:58:49

标签: javascript regex

我有一个工作的reg exp:

  var re = /([^\wåäö]*?)([\wåäö]+)([^\wåäö&]?|$)|.+/ig;

当我用这个替换它时,它不再起作用了:

  var re = new RegExp("([^\wåäö]*?)([\wåäö]+)([^\wåäö&]?|$)|.+", "ig");

这两个不应该相同吗?

2 个答案:

答案 0 :(得分:2)

\是正则表达式和字符串中的转义字符。您需要在第二版中加倍\

答案 1 :(得分:1)

您应该使用\转义\\。例如,当您在正则表达式文字(\w)中键入/\w/时,它会遵循正则表达式语法(在w之后允许\)。当你在字符串中执行相同的操作时,它遵循字符串语法,但不允许它。所以,你应该写"\\w"来实现相同的效果(换句话说,RegExp的source将是\w)。