匹配表达式没有<<要么 ]]

时间:2017-03-26 18:19:15

标签: regex angularjs-ng-pattern

只有在字符串中不存在<<>>]][[时才需要匹配该模式。

如果存在任何这些特殊字符,则匹配应为零,否则应匹配。

例如,我有一个表达式Stackoverflow,它应该作为匹配返回,但如果我有Stack]]over<<flow我不应该得到真实的回复。遗憾的是,以下模式不起作用:

/^(\[\[)|(\]\])|(\<\<)|(\>\>)

谢谢

1 个答案:

答案 0 :(得分:1)

使用以下正则表达式并否定结果:

<<|>>|\]\]|\[\[

这是一个实例:

&#13;
&#13;
var regex = /<<|>>|\]\]|\[\[/;
var strings = [
  "Stackoverflow",
  "Stack]]over<<flow"
];

for(var i=0; i<strings.length; i++) {
  console.log(!regex.test(strings[i]));
}
&#13;
&#13;
&#13;

如果你不能否定结果(比如使用Angular&#39; ng-pattern时),你也可以使用否定前瞻:

^((?!<<|>>|\]\]|\[\[).)*$

这是一个实例:

&#13;
&#13;
var regex = /^((?!<<|>>|\]\]|\[\[).)*$/;
var strings = [
  "Stackoverflow",
  "Stack]]over<<flow"
];

for(var i=0; i<strings.length; i++) {
  console.log(regex.test(strings[i]));
}
&#13;
&#13;
&#13;