我正在尝试匹配包含管道(|)运算符的模式。
使用下面的代码来匹配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"
此字符串不包含|操作员但仍然处于上述条件之下。
无法理解上述模式中的错误。
答案 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');
}
就个人而言,我喜欢保留斜线,但为了清楚起见。