【问题标题】:regex with or condition to verify two different patterns?带有或条件的正则表达式来验证两种不同的模式?
【发布时间】:2019-10-03 15:42:23
【问题描述】:

我需要制作一个正则表达式来验证这两种模式。基本上,如果任何字符串是从以下两种模式传递的,我应该能够验证它。

  • 第一个模式是 - 我可以有这样的字符串 tree1tree2。所以基本上一个数字前面是字符串tree
  • 第二种模式是-我可以有这样的字符串tree1atree1btree2atree2b。所以这个模式的 tree[number][a-z]。

我使用下面的正则表达式,但它只适用于第一个模式。如何制作一个可以同时处理两种模式的正则表达式。

Pattern patternSet = Pattern.compile("^tree[0-9]$");

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您可以添加一个可选的[a-z]? 字符类

    ^tree[0-9][a-z]?$
    
    • ^ 字符串开始
      • tree 字面匹配
      • [0-9] 匹配一个数字 0-9
      • [a-z]? 可选匹配 a-z
    • $ 字符串结束

    Regex demo | Java demo

    Pattern patternSet = Pattern.compile("^tree[0-9][a-z]?$");
    

    【讨论】:

      【解决方案2】:

      你的正则表达式应该看起来像tree\d[a-z]?,所以你的模式可以是:

      Pattern patternSet = Pattern.compile("tree\\d[a-z]?");
      

      如果您想要的不仅仅是一个数字,也不仅仅是一个字母,您可以使用:

      Pattern patternSet = Pattern.compile("tree\\d+[a-z]*");
      

      最后一个模式可以匹配tree123tree1abctree123abc

      【讨论】:

      • 你能告诉我If you wait more than a digit and more than a letter you can use是什么意思吗?
      • @flash 我的意思是如果你想匹配,例如如果你想匹配 tree123tree1abctree123abc
      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2015-05-14
      • 1970-01-01
      相关资源
      最近更新 更多