Javascript模式不匹配

时间:2017-12-13 16:52:55

标签: javascript

我正在尝试匹配包含管道(|)运算符的模式。

使用下面的代码来匹配patteren

var format = /[ \\|]/; // This is the pattern for matching pipe pattern

if ("Near raghavendra temple ring roads".match(format)) {
    alert("Invalid character");
} 

"Near raghavendra temple ring roads"此字符串不包含|操作员但仍然处于上述条件之下。

无法理解上述模式中的错误。

2 个答案:

答案 0 :(得分:3)



var format = /[\\|]/; // This is the pattern for matching pipe pattern

if ("Near raghavendra temple ring roads".match(format))
  console.log("Invalid character");

else
  console.log('All valid');




您正在匹配空格字符。从正则表达式图案(方形内部)括号中删除空格

答案 1 :(得分:0)

问题是你有空间:

/[ \\|]/

实际上意味着“匹配任何一个空格,\|”。

如果您只想匹配管道,请使用此:

const format = /[\|]/; // This is the pattern for matching pipe pattern

if ("Near raghavendra temple ring roads".match(format)) {
  console.log("Invalid character");
} else {
  console.log("Okay");
}

你可能有两个 - \,因为它需要在字符串中出现。但是,在正则表达式中,如果你做两个,它会使它成为\字面值。如果你只想逃离管道,只需使用一个。

事实上,在这样的集合中,你甚至不需要逃避它:

const format = /[|]/; // This is the pattern for matching pipe pattern

if ("Near raghavendra temple ring roads".match(format)) {
  console.log("Invalid character");
} else {
  console.log("Okay");
}

if ("Bad | character".match(format)) {
  console.log('Bad character');
}

就个人而言,我喜欢保留斜线,但为了清楚起见。