携帯電話番号フィールドがあり、任意の数字がゼロを含めて 9 回繰り返されているかどうか、および任意の電話番号または携帯電話番号が 2 つの異なる数字のみで構成されているかどうかを確認したいと考えています。
これを行うための正規表現などはありますか?
ポルトガルでは、電話番号は 2######## で始まり、携帯電話は 91/92/93/96 で始まり、両方とも 9 桁です。
携帯電話番号フィールドがあり、任意の数字がゼロを含めて 9 回繰り返されているかどうか、および任意の電話番号または携帯電話番号が 2 つの異なる数字のみで構成されているかどうかを確認したいと考えています。
これを行うための正規表現などはありますか?
ポルトガルでは、電話番号は 2######## で始まり、携帯電話は 91/92/93/96 で始まり、両方とも 9 桁です。
この正規表現は、2 または 91,92,93,96 で始まる次の 9 つの数字とのみ一致します。
^(?:2\d|9[1236])[0-9]{7}$
^
= 文字列の開始
(?:2\d|9[1236])
= 2 + 任意の数字OR 9 の後に 1、2、3、または 6
[0-9]{7}
= 7 つの数字
$
= 文字列の終わり
この正規表現を試してください:
^(?:(?:(2)([013-9])|(9)([1236]))(?!(?:\1|\2){7})(?!(?:\3|\4){7})\d{7}|(?=2{2,7}([^2])(?!(?:2|\5)+\b))22\d{7})\b
説明:
^ # from start
(?: # look at (?:...) as subsets
(?: #
(2)([013-9])|(9)([1236]) # store possible digits in groups \1 \2 \3 \4
) #
(?!(?:\1|\2){7}) # in front cannot repeat only \1 \2
(?!(?:\3|\4){7}) # neither only \3 \4
\d{7} # plus seven digits to complete nine
| # or
(?= # to avoid number repetitions:
2{2,7}([^2]) # in front should be possible to match
# the number 2 from 2 to seven times
# and another digit stored in \5
(?!(?:2|\5)+\b) # but not only them,
# so, should match another digit
# (not two or the \5) till the boundary
) #
22\d{7} # then, it refers to 22 and 7 digits = nine
)\b # confirm it don't overflows nine digits
それが役に立てば幸い。