0

私はいくつかの悪い言葉を次のように設定しています:

'aaa','bbb','ccc'

(悪い言葉は、 "john"、 "paul"、 "ringo"の場合もあります)(ごめんなさい@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
}

チャットは、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 に答える