我希望匹配包含强制字符和允许字符的整个单词。
例如
强制性字符是:[c,a,t]
允许的字符是:[y,s]
cat : passed (all mandatories are here)
caty : passed (all mandatories here and only allowed "y" char)
casy : failed (mandatory 't' is absent)
catso : failed (all mandatories but an intruder "o")
适当的REGEX代码是什么?
答案 0 :(得分:3)
如果你的正则表达式具有超前特征,你可以用这种模式做到这一点:
\b(?=[a-z]*?c)(?=[a-z]*?a)(?=[a-z]*?t)[actys]+\b
请注意,由于回溯,外观可能很昂贵。你可以用两个技巧来限制它:
1)对字符类使用更多约束:
\b(?=[a-bd-z]*c)(?=[b-z]*a)(?=[a-su-z]*t)[actys]+\b
2)使用占有量词(如果支持)
\b(?=[a-bd-z]*+c)(?=[b-z]*+a)(?=[a-su-z]*+t)[actys]++\b
或原子团代替:
\b(?=(?>[a-bd-z]*)c)(?=(?>[b-z]*)a)(?=(?>[a-su-z]*)t)(?>[actys]+)\b
答案 1 :(得分:1)
尝试这个并告诉我它是否需要任何增强功能:
/^ca[t]+[ys]*$/i