【问题标题】:validating a string with RegEx使用 RegEx 验证字符串
【发布时间】:2013-05-09 23:22:57
【问题描述】:

我正在尝试验证 Java 中的 RegEx 字符串,但我无法使其正常工作。我试图确保在执行搜索时文本字段始终包含以下字符串“AB10XY”。

我有以下代码行,可确保 AB 和 XY 在文本字段中,但不在数字中:

boolean checkChar = ((textField.getText().contains("AB")) && (textField.getText().contains("XY")));

我希望有类似的东西:

boolean checkChar = ((textField.getText().contains("AB[\\d]{2}XY")));

【问题讨论】:

  • ""AB10XY" 在执行搜索时始终包含在 textField 中。" 对您 & 用户来说不是更简单吗?使该文本字段不可编辑?
  • 您是打算回答我的问题,还是直接忽略它?请注意,可能有比使用 RegEx 更好的方法来解决这个问题,但在我了解问题的更多细节之前,很难缩小范围。
  • 您好抱歉耽搁了。我使用下面列出的解决方案之一来解决问题,除了我在 RegEx 公式中添加了括号以表示“。* [AB [\\ d] {2}XY]。*”到目前为止它工作得很好。我正在使用此解决方案来检查“AB12XY”是否在路径中。例如:C:\Users\user\Documents\Handbacks\AB12XYmmmd (mmm=month, d=day)

标签: java regex validation textfield


【解决方案1】:

你可以试试这个方法

boolean checkChar = ((textField.getText().matches(".*?AB[\\d]{2}XY.*")));

【讨论】:

  • @Anirudh true,但出于某种原因 OP 使用了它(可能会在实际代码中扩展)
【解决方案2】:

包含方法不支持正则表达式..您可以使用matches 方法

 textField.getText().matches(".*AB\\d{2}XY.*");

【讨论】:

    【解决方案3】:

    我猜这个数字并不总是 10,所以你应该使用这样的东西:

    boolean checkChar = textField.getText().matches(".*AB[\\d]{2}XY.*");
    

    【讨论】:

      【解决方案4】:

      使用包java.util.regex处理正则表达式

      boolean checkChar = java.util.regex.Pattern.compile("AB[\\d]{2}XY")
              .matcher(textField.getText()).find();
      

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 2021-05-20
        • 2013-07-25
        • 1970-01-01
        相关资源
        最近更新 更多