看来我在 python 中遇到了一个错误:(Python 2.7.3(默认,2012 年 4 月 10 日,23:24:47)[MSC v.1500 64 位(AMD64)] on win32)
>>> re.match("0[5-7][5-9][0-9]{7}", "0775123456") #match
<_sre.SRE_Match object at 0x0000000002D3FC60>
>>> re.match("0[5-7][5-9][0-9]{7}", "077512345") #dont match
>>> re.match("0[5-7][5-9][0-9]{7}", "07751234567") #match!
<_sre.SRE_Match object at 0x0000000002D3F920>
>>> re.match("0[5-7][5-9][0-9]{7}","07751234567777777777777777777777777777777777777777777777") #match!!
<_sre.SRE_Match object at 0x0000000002D3FC60>
所以我必须使用美元符号来“精确地”限制数字!我认为这是一个错误,因为在 HTML5 验证中,{7} 表示“完全”7 位数字,而在 python 中,它似乎表示“至少”,这是使用美元符号的行为方式:
>>> re.match("0[5-7][5-9][0-9]{7}$", "0775123456") #match
<_sre.SRE_Match object at 0x0000000002D3F920>
>>> re.match("0[5-7][5-9][0-9]{7}$", "07751234567") #dont match
>>> re.match("0[5-7][5-9][0-9]{7}$", "077512345") #dont match
这发生在所有其他正则表达式中,不仅精确的数字匹配,还必须添加美元!
这是一个错误吗?还是设计使然?