如何编写不以特定字符开头、后接指定模式的正则表达式
正则表达式编写方案
通用实现逻辑
你写的起始位置负向先行断言部分是正确的,只需在断言后拼接需要匹配的后续模式即可,通用格式为:
- 匹配符合规则的前缀片段:
^(?!char1|char2)(?:string1|string2) - 校验整个字符串完全符合规则:
^(?!char1|char2)(?:string1|string2)$
注:
(?:)为非捕获分组,不需要提取分组内容时可以替换为普通括号(),不影响匹配效果。
示例场景完整正则
对应「不能以英文双引号"或右括号)开头,后续匹配cat或dog」的要求,结合你给出的校验用例(允许起始字符和目标字符串之间存在其他字符),完整正则如下:^(?!["\)]).*(?:cat|dog)
如果要求起始字符后直接接cat或dog,无其他中间字符,正则如下:^(?!["\)])(?:cat|dog)
测试用例校验结果
(cat:匹配成功,判定合法"cat:被开头负向先行断言拦截,匹配失败,判定非法) dog:匹配成功,判定合法
内容的提问来源于stack exchange,提问作者Developer Sheldon
相关产品推荐
相关产品推荐

