2

次の正規表現があります。

^\+1242((35[79]|37[56]|46[^019]|44[^2]|4[^0169]\d|5[^0189]\d|6[34]\d|395|72\d))

私はその"4[^0169]\d"セクションで立ち往生しています。

正しくは、これを入力する+1242413と一致しません。のようなものも同様+1242401です。正しく一致します+1242441(つまり、許可されます)。

"442"のようにブロックしたいということで立ち往生してい+1242442ます。これは大したことではありません (上記の例の +1424401 のように)。ただし、441or443または444などは一致する必要があります。したがって+1242441、正規表現での一致が成功するはずです。

すでにブロックされているものと一緒に4[^0169]\d不一致にも拡張するにはどうすればよいですか?442

4

2 に答える 2

3

最も簡単な方法は、許可したい値を許可することだと思います(すでに行ったように):

^\+1242((35[79]|37[56]|46[^019]|44[^2]|4[^01469]\d|5[^0189]\d|6[34]\d|395|72\d))

だから私は44*(を通じて) を許可しませんでしたが、代わりに(を通じて) 以外の4[^01469]\dすべてを許可しました。44244[^2]

ただし、このパターンで124244aも許可されることに注意してください。これを修正するには、パターンに正の文字クラスのみが含まれるようにパターンを再考する必要があります。

^\+1242((35[79]|37[56]|46[2-8]|44[013-9]|4[23578]\d|5[2-7]\d|6[34]\d|395|72\d))
于 2013-07-12T21:48:09.287 に答える