我尝试编写一个正则表达式来匹配 10 位数字,它必须包含数字 4。例如:
s=['123456abc','abcisjgm','1234567895','1231231231']
for i in s:
if re.findall(r'[4]\d{9}\b',i):
print(i, "is valid")
else:
print(i, "is not valid")
输出如下,
123456abc is not valid
abcisjgm is not valid
1234567895 is not valid -----> this should be valid
1231231231 is not valid
最佳答案
您可以在 re.search
中使用以下模式:
^(?=\d*?4)\d{10}$
参见 regex demo 。
^
- 字符串开头(?=\d*?4)
- 0 个或多个数字后必须有4
,尽可能少\d{10}
- 十位数字$
- 字符串结尾。
参见 Python demo:
import re
s=['123456abc','abcisjgm','1234567895','1231231231']
for i in s:
if re.search(r'^(?=\d*?4)\d{10}$', i):
print(i, "is valid")
else:
print(i, "is not valid")
输出:
123456abc is not valid
abcisjgm is not valid
1234567895 is valid
1231231231 is not valid
关于REGEX 匹配 10 位数字且必须包含数字 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61462760/