-2

仅当字符串中不存在<<or>>]]or时,我才需要匹配模式。[[

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

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

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

谢谢

4

1 回答 1

1

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

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

这是一个活生生的例子:

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

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


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

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

这是一个活生生的例子:

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

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

于 2017-03-26T18:40:40.803 回答