正则表达式匹配包含特殊字符的字母数字字符串
我正在尝试在Django的URL模式中形成一个网址。
url(r'^reports/(?P<bu>\w+|\W)/$', \
LrsReportView.as_view(), name="elearning.lrsreports.region"),
这个网址的部分可以是字符串,或者是字母和数字的组合,或者是带有特殊字符的字母数字组合(除了/以外的字符)。
但是上面的网址出现了错误,具体是
NoReverseMatch: Reverse for 'elearning.lrsreports.region' with arguments '(u'Lawn&Garden',)' and keyword arguments '{}' not found.
从错误信息中我明白了,这个正则表达式不接受包含特殊字符的字符串。
请帮我看看这里可能有什么问题。
2 个回答
0
试试这个-
/^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.(_|[^\w])).+$/
2
你现在的正则表达式可以匹配:
- 一个或多个字母、数字和/或下划线的字符串:[A-Za-z0-9_]+
或者
- 一个单独的字符,但这个字符不能是字母、数字或下划线:[ ^A-Za-z0-9_]
你可能需要的是更像下面这样的:
(?P<bu>[\w-]+)
这个表达式可以匹配字母、数字、下划线和连字符。如果你想添加其他特殊字符,也可以把它们放在方括号里。记得有些字符在前面需要加个\
来转义哦。