如何编写正则表达式检测URL字符串中是否包含dev子串
正则失效原因
你之前使用的.*\bdev\b.*无法匹配目标用例,核心问题出在\b单词边界的匹配规则:\b仅能匹配\w(字母、数字、下划线)和\W(非上述字符)的交界位置:
- 第一个用例
https://ccdev-xyzcomm.abc.def.com中的dev前接字母c,两者同属\w字符,没有单词边界,因此无法触发匹配 - 如果你是在字符串中声明正则时写了
\\b,部分场景下可能存在转义失效问题,相当于你实际匹配的是字面量\b字符,也会导致匹配失败
适配方案
根据你的实际需求二选一即可:
方案1:仅需判断是否包含dev连续子串
如果不需要排除developer、device这类包含dev片段的普通单词,直接用最简正则即可:dev
如果你的使用场景要求正则必须匹配整个字符串,可以扩展为.*dev.*
方案2:需排除dev作为普通单词片段的场景
如果只需要匹配作为环境标识的dev,避免匹配developer这类词,可以用自定义边界的正则:(?:^|[a-z-])dev(?:[^a-z]|$)
这个规则覆盖你给出的两类用例,同时可以避免误匹配dev后接其他字母的场景。
内容的提问来源于stack exchange,提问作者Sweta Sharma
相关产品推荐
相关产品推荐

