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
これは、正確な数字の一致だけでなく、他のすべての正規表現でも発生し、ドルを追加する必要があります!
それはバグですか?それとも設計によるものですか?