我在代码中使用了以下regex代码:
pattern = re.compile('\d{3,4}(\/?)(\d{6,6})')
m= pattern.match('0481/987421')
if m:
print "yes"
else:
print "no"
它是一个正则表达式,应该适用于这样的电话号码:dddd/dddddd 所以先是3到4个数字,然后是不是斜杠,然后是6个数字。 它工作得很好,例如21/484135不起作用,其他错误的事情也不起作用。 但是这个正则表达式的问题是,当我的第一个字符是正确的,并且我在它后面随机输入任何东西,它仍然会输出“yes”。我的意思是这样的:0481/9874214879516874 我认为因为regex匹配前11个字符,所以它返回匹配的结果,而不管后面是什么。在
我怎样才能解决这个问题?在
我建议使用phonenumbers模块,而不是编写自己的正则表达式。下面是一个解析比利时电话号码的示例:
它将对无效电话号码引发异常:
^{pr2}$你需要锚定你的表情。在末尾添加
$
或\Z
,以确保后面没有任何内容。您还可以添加^
将其锚定在字符串的开头,但与match()
一起使用时不需要这样做。在相关问题 更多 >
编程相关推荐