用于匹配不同样式 URL 中的关键字的正则表达式


http://mywebsite/index.aspx?db=DAYTON#id%3D7304%3Bpage%3D1%3Bview%3Dpages
http://mywebsite/#id%3D3D7304%3Bpage%3D1%3Bview%3Dpages

上面的两个URL指向完全相同的位置,但样式不同。我试图写出一行表达式,将创建一个匹配,无论哪种风格的URL被扔在它。我主要关注的是"mywebsite/"

之后的所有内容。

任何帮助都将非常感激!

这里有一个heavy One-Liner Regex:

^http://mywebsite/(index.aspx?db=[A-Z]+)?#((id%w+(%3B)?)|(view%w+(%3B)?)|(page%w+(%3B)?))*$

它将接受您的网站可选的index.aspx?db=(设置为一些大写值)和您使用的3个变量的任何顺序:id, viewpage

彩色演示在这里:http://regex101.com/r/jB2jS3

首先,解码url,使事情变得更容易:

http://mywebsite/index.aspx?db=DAYTON#id=7304;page=1;view=pages
http://mywebsite/#id=3D7304;page=1;view=pages

现在您可以编写两个正则表达式来匹配每个path,并将它们与|运算符组合(演示):

http://mywebsite/(index.aspx?db=(w+)#id=(d+);page=(d+);view=(w+)|#id=3D7304;page=1;view=pages)

如果你的编程语言支持命名组,你也可以使用命名组。


注意,如果参数顺序改变,上面的正则表达式将不匹配url。

如果可以的话,我建议你使用URL解析器

相关内容

最新更新