加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

四个字母至少有一个“j”,优雅和最兼容的正则表达式解决方案?

发布时间:2020-12-14 06:05:58 所属栏目:百科 来源:网络整理
导读:我有这个问题让我头疼: 有没有办法使用正则表达式来测试至少包含字母“J”的4个字符的字符串?这就是我的意思: ^(j...|.j..|..j.|...j)$ 是的,我承认它很难看,如果问题改变4个字符到10个字符,或者将“至少一个j”改为“至少有一个j和一个k”,那就太疯了 为
我有这个问题让我头疼:

有没有办法使用正则表达式来测试至少包含字母“J”的4个字符的字符串?这就是我的意思:

^(j...|.j..|..j.|...j)$

是的,我承认它很难看,如果问题改变4个字符到10个字符,或者将“至少一个j”改为“至少有一个j和一个k”,那就太疯了

为此编写RegEx的更优雅和兼容的方式是什么?

附加问题:

>如果在学术上没有简单的答案,那么RegExp的限制是什么?为什么它不能解决这样的简单问题?
>任何适合这类任务的DSL?
>对于“至少有一个j和一个k”的10个字符串,最好的RegEx是什么?

解决方法

如果您的正则表达式引擎支持前瞻(大部分都支持),您可以使用

^(?=.*j).{4}$

前瞻(?=.* j)断言字符串中有一个j而没有实际消耗匹配的任何字符串.然后,以下.{4}将匹配四个字符的字符串.

^和$anchors确保字符串完全匹配.

如果要添加更多约束,只需添加另一个前瞻:

^(?=.*j)(?=.*k).{10}$

匹配如果一个字符串中至少有一个j和一个kare存在,正好是10个字符长.等等…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读