Javascript正则表达式对象和美元符号

时间:2009-02-04 17:18:42

标签: javascript regex

在下面的代码中。我期待的是真的,但我却变得虚假了。我错过了什么?

var text = "Sentence $confirmationlink$ fooo";     
alert(placeHolderExists(text,'confirmationlink'); // alerts false
function placeHolderExists(text,placeholdername) {  
  var pattern = new    RegExp('\$'+placeholdername+'\$');    
  return pattern.test(text);
}

4 个答案:

答案 0 :(得分:11)

在构建字符串时,RegExp表达式构建器中的“\”被视为转义字符,就像在实际的RegExp中一样。你需要逃脱两次,试试:

new RegExp('\\$'+placeholdername+'\\$');

答案 1 :(得分:4)

应该是

function placeHolderExists(text,placeholdername) {  
  var pattern = new    RegExp('\\$'+placeholdername+'\\$');    
  return pattern.test(text);
}

你需要双倍逃避你的$ sign

编辑:
annakata解释了原因。

答案 2 :(得分:3)

这种混淆是你不应该使用正则表达式的另一个例子,除非你真的需要。

return text.indexOf('$'+placeholdername+'$')!=-1;

...更简单,更快捷,并且当你有滑稽的角色时不会摔倒。

答案 3 :(得分:1)

加倍你的斜杠。

new RegExp('\\$'+placeholdername+'\\$');