【问题标题】:how to check if string contains only numerics or letters properly? Android如何正确检查字符串是否仅包含数字或字母?安卓
【发布时间】:2016-04-19 21:47:51
【问题描述】:

我正在尝试为用户需要输入的某个数字设置要求(pNumber)。 pNumber 应包含 2 个字母,然后是 6 个字母或数字,最后是一个数字。

我已经实现了一个我在 stackoverflow 上找到的方法,但是当我输入一个像“LL^&%JJk9”这样的数字时,它仍然会给我一个肯定的结果吗? 据我了解 .matches 检查字符串是否仅包含给定的值?

String First = pNumber.substring(0, 2);
String Middle = pNumber.substring(2, 8);
String Last = pNumber.substring(8, 9);

if (First.matches(".*[a-zA-Z].*") && Middle.matches(".*[a-zA-Z0-9].*") && Last.matches(".*[0-9].*")) {
  greenOk.setVisibility(View.VISIBLE);
  nextBtn.setEnabled(true);
} else {
  redCross.setVisibility(View.VISIBLE);
}

【问题讨论】:

  • 这应该足够了:这与你的问题相反:stackoverflow.com/a/8248352/503508
  • 顺便说一句,您的正则表达式可能不是您认为的那样。它们基本上匹配 1. 第一个字符串中的任何字符。 2. 中间字符串中的任意字符/数字。 3. 第三个字符串中的任意数字。
  • RegExr 非常适合学习和测试正则表达式。
  • 您认为.* 是什么意思?和[a-zA-Z]?

标签: java android string match


【解决方案1】:

您可以为此使用Apache Commons Lang。你有像isNumericisAlphanumeric这样的方法

或者使用字符isDigit之类的方法

【讨论】:

    【解决方案2】:

    可能是这样的:

        String input1 = "TYe4r5t12";
        String input2 = "LL^&%JJk9";
    
        String pattern = "([a-zA-Z]{2}[a-zA-Z0-9]{6}[0-9]{1})";
    
        Pattern r = Pattern.compile(pattern);
    
        Matcher m = r.matcher(input1);
    
        if (m.find()) {
            System.out.println("Valid !!!");
        }else{
            System.out.println("Invalid !!!");
        }
    

    【讨论】:

      【解决方案3】:

      TextUtils 类有多种方法,下面给出其中一种。

      TextUtils.isDigitsOnly(string)
      

      【讨论】:

        【解决方案4】:

        This Stackoverflow 详细介绍了如何使用 Apache Commons 来解决您的问题。

        如果您正在寻找解决问题的正则表达式途径,这可能会对您有所帮助:

        if(pNumber.matches("[a-zA-Z]{2}[a-zA-Z0-9]{6}[0-9]")) {
            greenOk.setVisibility(View.VISIBLE);
            nextBtn.setEnabled(true);
        } else {
            redCross.setVisibility(View.VISIBLE);
        }
        

        【讨论】:

        • 中间6个字符是字母/数字,最后一个字符是数字。
        • 正则表达式不正确。要求规定:2 个字母,然后是 6 个字母或数字,最后是 1 个数字。您提供的模式匹配 2 个字母、6 个数字和 1 个字母。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        • 2014-04-02
        • 2011-02-24
        • 1970-01-01
        • 2020-12-12
        • 2014-03-30
        • 2014-11-01
        相关资源
        最近更新 更多