我有一个手机号码字段,我想检查它是否有任何数字重复 9 次,包括零,以及是否任何电话号码或手机号码仅由两个不同的数字组成。
是否有任何正则表达式或其他东西可以做到这一点?
在葡萄牙,电话号码以 2######## 开头,手机号码以 91/92/93/96 开头,两者都有 9 位数字。
我有一个手机号码字段,我想检查它是否有任何数字重复 9 次,包括零,以及是否任何电话号码或手机号码仅由两个不同的数字组成。
是否有任何正则表达式或其他东西可以做到这一点?
在葡萄牙,电话号码以 2######## 开头,手机号码以 91/92/93/96 开头,两者都有 9 位数字。
试试这个正则表达式:
^(?:(?:(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
希望能帮助到你。
此正则表达式将仅匹配以下 9 个以 2 或 91、92、93、96 开头的数字
^(?:2\d|9[1236])[0-9]{7}$
^
= 字符串开头
(?:2\d|9[1236])
= 2 + 任何数字或9 后跟 1、2、3 或 6
[0-9]{7}
= 7 个数字
$
= 字符串结尾