带if条件的正则表达式

用户名

我是新来的正则表达式。我正在尝试构造一个正则表达式,其中前三个字符必须是字母,然后字符串的其余部分可以是任何字符。如果字符串的前三个字符之后的部分包含&,则此部分应以“。”开头和结尾。

我能够构造^ [az] {3},但停留在条件语句中。

可以用一个表达式完成吗?

威克多·斯特里比尤(WiktorStribiżew)

在大多数regex风格中,您可以使用简单的前行来确保当前位置右侧的某些地方是否存在某些文本,并使用替代运算符|可以检查替代项。

因此,我们基本上有2种选择:&字符串的前3个字母后是否有某处,或者没有。因此,我们可以使用

^[A-Za-z]{3}(?:(?=.*&)".*"|(?!.*&).*)$

正则表达式演示

详细资料

  • ^ -字符串开始
  • [A-Za-z]{3} -3个字母
  • (?:(?=.*&)".*"|(?!.*&).*) -两种选择中的任何一种:
    • (?=.*&)".*"-如果&字符串((?=.*&))match中某处",则任何0+个字符,然后"
    • | - 或者
    • (?!.*&).*-如果字符串中没有&(?!.*&)),则将匹配的0+字符最多匹配到...。
  • $ -字符串结尾。

在PCRE,.NET或某些其他正则表达式中,您可以访问条件构造这是PCRE演示

^[A-Za-z]{3}(?(?=.*&)".*"|.*)$
            ^^^^^^^^^^^^^^^^^

(?(?=.*&)".*"|.*)方式:

  • (?(?=.*&)-如果&后面有0+个字符,则为...
  • ".*"-匹配"anything here"类的字符串
  • | -或者,如果没有 &
  • .* -匹配当前位置(即前3个字母之后)的任何0+个字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章