要给出一个正则表达式,用于匹配不以国家区号或前缀开头的9位数字,可以使用反向否定查找。以下是一个示例代码:
import re
def match_9_digits(number):
pattern = r'^(?!\d{10})(?!\d{11})(?!\d{12})\d{9}$'
return re.match(pattern, number)
# 测试
print(match_9_digits("123456789")) # 匹配
print(match_9_digits("0123456789")) # 不匹配,以0开头
print(match_9_digits("1123456789")) # 不匹配,以1开头
print(match_9_digits("91123456789")) # 不匹配,以91开头
print(match_9_digits("1234567890")) # 不匹配,以10位数字开头
在上面的示例中,使用了反向否定查找来排除以国家区号或前缀开头的数字。^(?!\d{10})(?!\d{11})(?!\d{12})\d{9}$
正则表达式的含义如下:
^
:匹配字符串的开始(?!\d{10})
:负向预查,表示后面不能是10位数字(?!\d{11})
:负向预查,表示后面不能是11位数字(?!\d{12})
:负向预查,表示后面不能是12位数字\d{9}
:匹配9位数字$
:匹配字符串的结束因此,这个正则表达式可以匹配不以国家区号或前缀开头的9位数字。
上一篇:不以符号开头的文件的尾部