如何编写正则表达式匹配不含数字及指定关键词的URL
正则表达式匹配不含数字及特定关键词的URL
需求说明
需要编写正则表达式,匹配不包含数字(0-9)以及cat、dog这类特定关键词的URL:
- 需排除的URL示例:
https://www.shalqlq.com/image/something/51227/ https://www.shalqlq.com/something/40392/video/51232/ https://www.something.com/cat/hello_world/ https://www.sxxxomething.com/dog/image/
- 需选中的URL示例:
https://www.somethinxxxg.com/world/fin/ https://www.sometxhiaaxng.com/something/videbo/ https://www.shalqlq.com/image/something
当前使用的正则^((?!/([\d]+)/).)*$仅能排除含数字的URL,需扩展规则同时排除含cat、dog的URL。
解决方案
在否定前瞻中添加多个排除条件,用|分隔即可,最终正则如下:
^((?!/\d+/|/(cat|dog)/).)*$
规则解释
(?!...)为否定前瞻断言,只要URL中不存在括号内的任意一种模式,就会匹配成功/\d+/匹配包含纯数字的路径段(如/51227/)/(cat|dog)/匹配包含cat或dog的路径段(如/cat/、/dog/)- 外层的
^((?!...).)*$结构确保整个URL的任意位置都不会出现上述被排除的模式
内容的提问来源于stack exchange,提问作者sli4
相关产品推荐
相关产品推荐

