当/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。你的答案很简短,切中要害(但我只能将其中一个答案设置为“已接受”答案)。