我的urls.py中有以下条目:
url(r'^\d{2}/$', 'test.view'),
我显然只想匹配2位数,所以12位好,23位好,但123位不好,而且效果很好。
然而,当我尝试阿拉伯数字和英语数字时,如22或44,它匹配,但我不想要这种行为!例如,数字24导致以下请求:
http://localhost/2%D9%A4
我绝对不希望这样。如何使Django URL CONF只接受正常的ascii数字?
答案 0 :(得分:3)
\d
匹配任何数字,包括阿拉伯数字。只需使用[0-9]
代替:
url(r'^[0-9]{2}/$', 'test.view'),
引自docs:
例如,\ d
未指定UNICODE标志时,匹配任何十进制数字; 这相当于集合[0-9]。使用UNICODE,它将匹配 无论在Unicode字符中被分类为十进制数字 属性数据库。
٢
和٤
是Unicode十进制数字:
>>> u'٤'.isdigit()
True
>>> u'٢'.isdigit()
True
希望有所帮助。