搜索反斜杠

时间:2012-01-21 14:35:02

标签: javascript backslash

我有JavaScript搜索例如。字母表中的字母,如果字母不在那里则输出“ok”,如果字母在那里则输出“ok ok”:

 var term = "term";
 var slash = "a";
 var search =term.search(slash);

 if(search==-1)
 "ok";
 else
 "not ok";

问题是我希望这也可以使用反斜杠。 奇怪的是,连续搜索2个反斜杠,所以“term”输出“ok”和“term \\”输出“not ok”:

 var term = "term";
 var slash = "\\\\";
 var search =term.search(slash);

 if(search==-1)
 "ok";
 else
 "not ok";

但是搜索1个反斜杠不起作用,因此此代码会出错:

 var term = "term";
 var slash = "\\";
 var search =term.search(slash);

 if(search==-1)
 "ok";
 else
 "not ok";

希望有人看到错误。谢谢!

1 个答案:

答案 0 :(得分:3)

在JavaScript中制作正则表达式涉及两层解释。第一个是 string 语法,你已经正确加倍反斜杠以解决这个问题。但是,字符串本身将由正则表达式语法分析代码解释,并且 将出现单个反斜杠的问题。换句话说,由单个反斜杠组成的正则表达式是语法错误;根本不允许这样做。如果要搜索单个反斜杠,则需要一个带有两个反斜杠的正则表达式。

使用原生文字正则表达式语法制作正则表达式使这更加明显:

var r1 = /\\/; /* this is OK */
var r2 = /\/;  /* this is not OK */