2017-07-06 13 views
-1

正規表現の経験はありません。特殊文字(+ - */&など)の繰り返しを許さない正規表現が必要です 文字列に数字、英数字、特殊文字を含めることができます。正規表現 - 繰り返し特殊文字を防ぐ方法は?

これが有効である必要があります:ABC、

dfをこれが無効である必要があります:あなたは私を助けることができる場合、私は本当に理解されるであろうABC-、

DF!進歩をありがとう。

+1

?私にとって ' - 'と '、'は同じように '特別な'ものです – Brandon

答えて

1

2つの溶液は、これまでが許可されていない文字列に一致発表します。

しかしtilteは...を防ぐためにどのようあるので、私は正規表現 が許可文字列と一致する必要があることを前提としています。

  • それは2つの 連続した特殊文字が含まれていない場合は、
  • がそうでなければ一致しない全体文字列と一致:それは正規表現がなければならないことを意味します。

あなたはこの次の部分一緒に入れて達成することができます:

  • ^を - 文字列アンカーの開始、
  • (?!.*[...]{2}) - 2連続で特別 文字の否定先読み...としてここでマークを)、任意の場所で、
  • 完全な(空でない)文字列に一致する正規表現
  • $ - 文字列アンカーの末尾。

だから全体正規表現は次のようになります

^(?!.*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2}).+$ 

注([]間の)文字クラス内の次の文字をエスケープバックスラッシュ がで-(もし中央の前に置かれるべきであること)、大括弧をつけて 、円弧を/(正規表現のターミネータ)で囲みます。

それとも、個々の単語(全体ではなく 文字列)に正規表現を適用したい場合は、正規表現は次のようになります。

あなたは特殊文字を考慮しない他に何
\b(?!\S*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2})\S+ 
+0

素晴らしい作品です。本当にありがとう、ありがとう! – asyaben

0

無効な文字列と一致するには、次の正規表現を使用します。

[^A-Za-z0-9]{2,} 
関連する問題