[英]create regex expression for url
我将拥有网址
http://www.yellowpages.com/randolph-nj/mip/brookside-village-apartments-1041662
要么
http://www.yellowpages.com/randolph-nj/mip/brookside-village-apartments-1041662?from=pubapi_5k2t9
我可以匹配它们的最佳/最有效的正则表达式是什么。 基本上,这将是一个网址拟合
/^https?:\\/\\/www.yellowpages.com\\/[\\w|-]+\\/mip\\/[\\w|-]+-\\d+/
然后有时候问号或不跟我组成的from=
文字
可能这就是您要找的东西吗?
/^https?:\/\/www.yellowpages.com\/[\w|-]+\/mip\/[\w|-]+-\d+(\?from=pubapi_[^\s]{5})?/
上面的正则表达式将匹配基本url,并可选地匹配?from=pubapi_
以及五个非空格字符。
我想知道如何使用或不使用它
我想那一定是你问题的实质。 这可以通过使用()?
创建可选组来实现()?
(请注意末尾的?表示“零或其中之一”)。 我建议在https://regex101.com/上玩一下,以了解这种“高级”正则表达式语法。
在正则表达式的第一部分,您可以转义点\\.
如果您想从字面上匹配它们。
如果要匹配可选的querystring参数,则可以使用可选的?
非捕获组(?:
并声明字符串$
的结尾
您可以匹配querystring参数的一些方法:
(?:\\?from=\\w+)?
匹配一个或多个单词字符\\w+
(将匹配pubapi_5k2t9
) (?:\\?from=pubapi_\\w{5})?
pubapi_之后精确匹配5个字符 (?:\\?from=[^&]+)?$
使用否定的字符类不匹配与号(或用\\n
扩展字符类以不匹配换行符) 第一个选项的示例:
^https?:\\/\\/www\\.yellowpages\\.com\\/[\\w|-]+\\/mip\\/[\\w|-]+-\\d+(?:\\?from=\\w+)?$
const strings = [ "http://www.yellowpages.com/randolph-nj/mip/brookside-village-apartments-1041662", "http://www.yellowpages.com/randolph-nj/mip/brookside-village-apartments-1041662?from=pubapi_5k2t9", "http://www.yellowpages.com/randolph-nj/mip/brookside-village-apartments-1041662?fro=pubapi_5k2t9" ]; let pattern = /^https?:\\/\\/www\\.yellowpages\\.com\\/[\\w|-]+\\/mip\\/[\\w|-]+-\\d+(?:\\?from=\\w+)?$/; strings.forEach((s) => { console.log(s + " ==> " + pattern.test(s)); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.