Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当/patt/version工作时,为什么RegExp版本不工作?(Javascript)_Javascript_Regex - Fatal编程技术网

当/patt/version工作时,为什么RegExp版本不工作?(Javascript)

当/patt/version工作时,为什么RegExp版本不工作?(Javascript),javascript,regex,Javascript,Regex,我有一个工作经验: var re = /([^\wåäö]*?)([\wåäö]+)([^\wåäö&]?|$)|.+/ig; 当我用这个替换它时,它不再工作: var re = new RegExp("([^\wåäö]*?)([\wåäö]+)([^\wåäö&]?|$)|.+", "ig"); 这两个不应该是相同的吗?您应该使用\\来转义\。例如,当您在正则表达式文本(/\w/)中键入\w时,它遵循正则表达式语法(允许在\之后键入w)。当您在字符串中执行相同的操

我有一个工作经验:

  var re = /([^\wåäö]*?)([\wåäö]+)([^\wåäö&]?|$)|.+/ig;
当我用这个替换它时,它不再工作:

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

这两个不应该是相同的吗?

您应该使用
\\
来转义
\
。例如,当您在正则表达式文本(
/\w/
)中键入
\w
时,它遵循正则表达式语法(允许在
\
之后键入
w
)。当您在字符串中执行相同的操作时,它将遵循字符串语法,这是不允许的。因此,您应该改为编写
“\\w”
,以实现相同的效果(换句话说,RegExp的
源代码将是
\w
)。

\
是regex和字符串中的转义字符。您需要在第二个版本中将
\
翻一番。

谢谢James。你的答案很简短,切中要害(但我只能将其中一个答案设置为“已接受”答案)。