0

我有一些不好的词,例如:

'aaa','bbb','ccc'

(坏话也可以是,“约翰”,“保罗”,“林戈”)(对不起@cyilan)

我不想让另一个/相同的bad word 紧随其后bad word

aaa后面可以跟一个非坏词,then也可以跟一个坏词:

  ...aaaRoyibbb...  //ok
  ...cccRoyiaaa...  //ok

   ...aaabbb...// NOT OK
   ...cccbbb...// NOT OK
   ...cccccc...// NOT OK

一个坏词不允许紧跟另一个/相同的坏词

我尝试了一些正则表达式但没有成功..

任何帮助都感激不尽

4

3 回答 3

1
var str = "...aaabbb...";
if(!str.test(/(?:aaa|bbb|ccc){2}/)){
    // passed
}

Chat 透露,OP 真正想要的是:

/^(?!(?:aaa|bbb|ccc)|.*(?:aaa|bbb|ccc){2}|.*(?:aaa|bbb|ccc)$)/

但真的真的:

^(?!(?:aaa|bbb|ccc)\b|.*\b(?:aaa|bbb|ccc)\s+(?:aaa|bbb|ccc)\b|.*\b(?:aaa|bbb|cc‌​c)$)
于 2012-06-04T07:28:20.200 回答
1
match = subject.match(/\b([a-z]{3})(?:(?!\1)|(?=\1))[a-z]+\b/i);
if (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
} else {
    // Match attempt failed
}
于 2012-06-04T07:31:09.427 回答
0

您正在寻找的解决方案是 \b。\b 被定义为分词。如果它跟在空格或数字后面,那么如果后面的文本是字母,它就会匹配。如果它跟在字母后面,那么如果后面不是字母(即不是一个连续的词)就匹配。它可以有效地用作锚标记,如下所示:

\byourword\b

它会匹配:

This is yourword, but not mine.
yourword is found in this sentence.

但它不匹配:

When yourwordis found in other words, this will not match.
And ifyourword is at the end of another word, it will still not match.
于 2012-06-04T07:32:52.790 回答