使用正则表达式java匹配数字和字母/数字(按分隔)

时间:2016-10-02 18:28:20

标签: java regex match matching

当字符串是数字o字母/数字时,它匹配的正确形式是什么,例如,我有这段代码

String regexNum = "\\d*";
String regexVar = "[a-zA-Z0-9]*";

if(valor.matches(regexNum))
{
   System.out.println("It's a number");
}
if(valor.matches(regexVar))
{
   System.out.println("It's a variable");
}

当我输入" SAL45"时,输出为"它是变量",什么是好的,所以,当我输入&#34时; 45",输出是"它是变量"再次,但我需要输出"它是一个数字",我该如何解决这个错误?

2 个答案:

答案 0 :(得分:2)

使用“45”,两个消息都被打印出来。您只需要使用else来只显示一条消息。这是更正后的代码: -

String regexNum = "\\d*";
String regexVar = "[a-zA-Z0-9]*";

if(valor.matches(regexNum))
{
   System.out.println("It's a number");
}
else if(valor.matches(regexVar))
{
   System.out.println("It's a variable");
}

答案 1 :(得分:2)

你的正则表达式不正确。

以下是数字条件:

  1. 长度必须大于零
  2. 所有字符都应为数字
  3. 以下是变量的条件:

    1. 必须以_或字母[a-zA-Z]或$
    2. 开头
    3. 其他字符应为_,数字[0-9],字母[a-zA-Z],$
    4. 
          String regexNum = "\\d+";
          String regexVar = "[a-zA-Z_$][a-zA-Z_$0-9]*";
      
          if (valor.matches(regexNum)) {
              System.out.println("It's a number");
          }
          if (valor.matches(regexVar)) {
              System.out.println("It's a variable");
          }