2016-10-02 112 views
0

什么是正确的形式来匹配当字符串是标记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”,输出是“这是一个变量”,什么都可以,所以,当我输入“45”时,输出是“这是一个变量”,但我需要输出“这是一个数字”,如何我能解决那个错误吗?

+1

使var以字母开头也许? ''[a-zA-Z] [a-zA-Z0-9] *“' – flakes

+1

它可以工作,thanx – Baker1562

回答

2

您的正则表达式不正确。

下面是编号条件:

  1. 长度必须大于零
  2. 所有有文字应该是数字

,这里是一个可变的条件:

  1. 必须与_或字母[A-ZA-Z]或$
  2. 其他字符开始应该是_,号码[0-9],字母[A-ZA-Z],$
 

    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"); 
    } 

+0

也许应该加上美元符号! – flakes

+0

谢谢@flkes $符号添加 –

1

使用“45”,这两个信息都被打印。你只需要使用其他的只显示一条消息。以下是更正后的代码: -

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"); 
} 
相关问题