如何在正则匹配器中添加可选字符串?实现特定URL正则匹配
正则表达式精准匹配方案
完全可以实现,针对你的需求,优化后的正则表达式如下:
https?://iam(?:\.(dev|uat))?\.foo\.com/v1/bar
规则说明
https?://:兼容匹配http://和https://协议iam:匹配固定前缀字符(?:\.(dev|uat))?:?:表示非捕获组,避免额外存储匹配结果\.转义点号,匹配真实的域名分隔符(dev|uat)限定仅匹配dev或uat这两个子域标识?表示这部分为可选,允许域名不带中间子域(即直接匹配iam.foo.com的情况)
\.foo\.com:转义点号,精准匹配固定域名部分,解决原正则中.匹配任意字符的问题/v1/bar:匹配固定路径
匹配验证
该正则可以精准匹配你列出的所有目标URL:
https://iam.dev.foo.com/v1/barhttps://iam.uat.foo.com/v1/barhttps://iam.foo.com/v1/bar
同时会拒绝匹配不符合规则的URL(比如https://iam.test.foo.com/v1/bar、https://iam.abc.dev.foo.com/v1/bar等)。
内容的提问来源于stack exchange,提问作者Robert O'Neal
相关产品推荐
相关产品推荐

