我可以使用一些帮助来编写正则表达式.在我的Django应用程序中,用户可以点击以下URL:
http://www.example.com/A1/B2/C3
我想创建一个允许接受以下任何一个有效URL的正则表达式:
http://www.example.com/A1 http://www.example.com/A1/B2 http://www.example.com/A1/B2/C3
我猜我需要使用"OR"条件,但是我无法让我的正则表达式进行验证.有什么想法吗?
更新:到目前为止这是正则表达式.请注意,我没有包含" http://www.example.com "部分 - Django为我处理.我只关心验证1,2或3个子目录.
^(\w{1,20})|((\w{1,20})/(\w{1,20}))|((\w{1,20})/(\w{1,20})/(\w{1,20}))$
Andre Bossar.. 5
跳过|
,使用?
和()
http://www\.example\.com/A1(/B2(/C3)?)?
如果你用一个模式替换A1-C3:
http://www\.example\.com/[^/]*(/[^/]*(/[^/]*)?)?
说明:
它匹配以每个字符串开头的字符串 http://www.example.com/A1
它可以匹配额外的/B2
,甚至是额外的/C3
,但/C3
只有匹配,当有一个/B2
[^/]*
(尽可能多的非斜线)
如果您需要特殊捕获组中的A1-C3,您可以使用:
http://www\.example\.com/([^/]*)(/([^/]*)(/([^/]*))?)?
将给(groupnumber: content
):
matches: 0: (http://www.example.com/dir1/dir2/dir3) 1: (dir1) 2: (/dir2/dir3) 3: (dir2) 4: (/dir3) 5: (dir3)
你可以在这里在线查看或获得这个工具(是的它是免费的,它甚至用Lisp写的......).
跳过|
,使用?
和()
http://www\.example\.com/A1(/B2(/C3)?)?
如果你用一个模式替换A1-C3:
http://www\.example\.com/[^/]*(/[^/]*(/[^/]*)?)?
说明:
它匹配以每个字符串开头的字符串 http://www.example.com/A1
它可以匹配额外的/B2
,甚至是额外的/C3
,但/C3
只有匹配,当有一个/B2
[^/]*
(尽可能多的非斜线)
如果您需要特殊捕获组中的A1-C3,您可以使用:
http://www\.example\.com/([^/]*)(/([^/]*)(/([^/]*))?)?
将给(groupnumber: content
):
matches: 0: (http://www.example.com/dir1/dir2/dir3) 1: (dir1) 2: (/dir2/dir3) 3: (dir2) 4: (/dir3) 5: (dir3)
你可以在这里在线查看或获得这个工具(是的它是免费的,它甚至用Lisp写的......).