我有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";
希望有人看到错误。谢谢!
答案 0 :(得分:3)
在JavaScript中制作正则表达式涉及两层解释。第一个是 string 语法,你已经正确加倍反斜杠以解决这个问题。但是,字符串本身将由正则表达式语法分析代码解释,并且 将出现单个反斜杠的问题。换句话说,由单个反斜杠组成的正则表达式是语法错误;根本不允许这样做。如果要搜索单个反斜杠,则需要一个带有两个反斜杠的正则表达式。
使用原生文字正则表达式语法制作正则表达式使这更加明显:
var r1 = /\\/; /* this is OK */
var r2 = /\/; /* this is not OK */