【问题标题】:Use variables in pattern matcher在模式匹配器中使用变量
【发布时间】:2012-05-06 06:03:03
【问题描述】:

我有以下几点:

if (mobile.matches("[0-9]{6,20}")) {
   ...
}

但想用变量值替换 {6,20},因为它们在某些情况下是动态的。

int minValue = 11;
int maxValue = 20

if (mobile.matches("[0-9]{minValue,maxValue}")) {
   ...
}

如何在 Reg Exp 中包含变量?

谢谢

【问题讨论】:

    标签: java regex matcher


    【解决方案1】:

    你也可以使用String.format("[0-9]{%s,%s}", minValue, maxValue)

    【讨论】:

      【解决方案2】:

      使用 Java 的简单字符串连接,使用加号。

      if (mobile.matches("[0-9]{" + minValue + "," + maxValue + "}")) {
      

      确实,正如 Michael 建议的那样,如果你经常使用它,编译它会更好地提高性能。

      Pattern pattern = Pattern.compile("[0-9]{" + minValue + "," + maxValue + "}");
      

      然后在需要时像这样使用它:

      Matcher m = pattern.matcher(mobile);
      if (m.matches()) {
      

      【讨论】:

      • 如果你要经常使用正则表达式匹配器,你可以预编译它并且值不会改变。
      • 那行得通,我只是想可能有其他推荐的方式。干杯 Martijn...和安迪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多