http://mywebsite/index.aspx?db=DAYTON#id%3D7304%3Bpage%3D1%3Bview%3Dpages
http://mywebsite/#id%3D3D7304%3Bpage%3D1%3Bview%3Dpages
上面的两个URL到达完全相同的位置,但风格不同。我试图写出一个单行表达式,无论抛出哪种类型的URL,都会创建一个匹配。我一直专注于“mywebsite /”之后的所有事情。
非常感谢任何帮助!
答案 0 :(得分:0)
首先,解码网址以简化操作:
http://mywebsite/index.aspx?db=DAYTON#id=7304;page=1;view=pages
http://mywebsite/#id=3D7304;page=1;view=pages
现在,您可以编写两个正则表达式来匹配每个path
,并将它们与|
运算符(Demo)结合使用:
http://mywebsite/(index.aspx\?db=(\w+)#id=(\d+);page=(\d+);view=(\w+)|#id=3D7304;page=1;view=pages)
如果您的编程语言支持,您也可以使用named groups。
请注意,如果参数顺序发生变化,上面的正则表达式将与URL不匹配。
如果可以的话,我建议您使用URL解析器。
答案 1 :(得分:0)
这是重 One-Liner Regex:
^http:\/\/mywebsite\/(index\.aspx\?db=[A-Z]+)?#((id%\w+(%3B)?)|(view%\w+(%3B)?)|(page%\w+(%3B)?))*$
它会接受您的网站,其中包含可选的index.aspx?db=
(设置为某个大写值)以及您使用的3个变量的任意顺序:id
,view
和page
多彩解释演示:http://regex101.com/r/jB2jS3