我有这个问题让我头疼:
有没有办法使用正则表达式来测试至少包含字母"J"的4个字符的字符串?这就是我的意思:
^(j...|.j..|..j.|...j)$
Run Code Online (Sandbox Code Playgroud)
是的,我承认它很难看,如果问题改变4个字符到10个字符,或者将"至少一个j"改为"至少有一个j和一个k",那就太疯了
为此编写RegEx的更优雅和兼容的方式是什么?
附加问题:
如果您的正则表达式引擎支持前瞻(大部分都支持),您可以使用
^(?=.*j).{4}$
Run Code Online (Sandbox Code Playgroud)
前瞻(?=.*j)断言,j字符串中有一个地方没有实际消耗匹配的任何字符串.然后,以下.{4}将匹配四个字符的字符串.
在^与$锚确保该字符串被全部匹配.
如果要添加更多约束,只需添加另一个前瞻:
^(?=.*j)(?=.*k).{10}$
Run Code Online (Sandbox Code Playgroud)
匹配如果字符串中至少有一个j和一个k正好长度为10个字符.等等...