1

私が欲しいものを見るには、私が使用している正規表現をチェックしてください。英語で説明してみます。4444or 444444444orに合わせたい444-44-4444。ここに私が持っているものがあり、それは私が望むことをします。

^[0-9]{9}$|^[0-9]{4}$|^[0-9]{3}-[0-9]{2}-[0-9]{4}$

ORなしでそれを行う方法はありますか?こうしようと思った

([0-9]{3}-?[0-9]{2}-?)?[0-9]{4}

222-222222しかし、それは私が除外したいことを可能にします。

4

2 に答える 2

1

後方参照でこれを行うことができるはずです:

^(?:\d{3}(-?)\d{2}\1)?\d{4}$

が存在する場合、-キャプチャされ、 で参照できます\1。存在しない場合は、\1空になります。つまり、本質的に-は、 がその位置にある場合、他の位置にもあるに違いないということです。

デモ

于 2012-04-05T18:02:00.200 に答える
0

answer actual としてマークされたパターンは、有効な SSN 番号の米国仕様と一致しないため失敗します。

一致無効化機能を使用すると、このパターンが機能し、000 と 666、または政府の仕様に従って 9xx で始まる番号が破棄されます。社会保障番号のランダム化

# To use this regex pattern specify IgnoreWhiteSpace due to these comments.
^                           # Beginning of line anchor      
(?!9)                       # Can't be 900- 999                                   
(?!000)                     # If it starts with 000 its bad (STOP MATCH!)
(?!666)                     # If it starts with 666 its bad (STOP MATCH!)
(?<FIRST>\d{3})             # Match the First three digits and place into First named capture group
(?:[\s\-]?)                 # Match but don't capture a possible space or dash
(?<SECOND>\d\d)             # Match next two digits
(?:[\s-]?)                  # Match but don't capture a possible space or dash
(?<THIRD>\d{4})             # Match the final for digits
$                           # EOL anchor

私のブログ記事「Regular Expression (Regex) Match Invalidator (?!) in .Net 」で、マッチ インバリデーターの使用について説明しています。

于 2012-04-05T19:17:05.087 に答える