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

Why is not the RegExp version working when the /patt/ version works? (Javascript)

本文关键字:工作 版本 Javascript patt 为什么 RegExp      更新时间:2023-09-26

我有一个正在工作的reg exp:

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

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

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

这两个不应该是一样的吗?

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

您应该使用''来转义'。例如,当您在正则表达式文字(/'w/)中键入'w时,它将遵循正则表达式语法(允许在'之后键入w)。当你在字符串中做同样的事情时,它会遵循字符串语法,这是不允许的。因此,你应该写"''w"来达到同样的效果(换句话说,RegExp的source将是'w)。