如何用正则表达式匹配含指定必填字符的任意顺序合法单词?
解决正则匹配问题的方案
你需要的正则表达式是:^(?=.*d)[dyujkfec]+$
表达式拆解:
^和$:锁定整个单词的首尾,确保匹配的是完整单词而非片段(?=.*d):正向预查规则,强制要求字符串里至少包含一个d,满足必填项要求,且不限制d的位置[dyujkfec]+:匹配一个或多个仅来自指定集合的字符(必填d加上可选的yujkfec),字符顺序不做限制
匹配验证:
- 符合要求的匹配项:
duck、dey、feed、yudekk、dude、jude、dedededy、jejeyyyjd都会被成功匹配——它们既包含必填的d,所有字符也都在允许的集合内 - 不含必填d的
yuck、feck:因未通过预查规则,无法被匹配 - 含集合外字符的
sucked(含s)、shock(含s、h、o)、blah(含b、l、a、h)、food(含o)、bard(含b、a、r):因包含指定集合外的字符,会被[dyujkfec]+规则排除
你之前写的^[d]+[yujkfec]*$只限定了d在开头,而正向预查没生效大概率是写法有误,比如没结合首尾锚点,或者字符集合没有覆盖所有允许的字符。
内容的提问来源于stack exchange,提问作者Chad Miles
相关产品推荐
相关产品推荐

