【问题标题】:Match numbers and letters/numbers using regex java (by separated)使用正则表达式 java 匹配数字和字母/数字(通过分隔)
【发布时间】:2016-10-02 18:28:19
【问题描述】:

当字符串是数字 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”时,输出是“It's a variable”,这很好,所以,当我输入“45”时,输出又是“It's a variable”,但我需要输出“这是一个数字”,我该如何解决这个错误?

【问题讨论】:

  • 让 var 以字母开头? "[a-zA-Z][a-zA-Z0-9]*"
  • 它有效,谢谢

标签: java regex match matching


【解决方案1】:

您的正则表达式不正确。

这里是 Number 的条件:

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

这是变量的条件:

  1. 必须以 _ 或字母 [a-zA-Z] 或 $ 开头
  2. 其他字符应为_、数字[0-9]、字母[a-zA-Z]、$
字符串 regexNum = "\\d+"; 字符串 regexVar = "[a-zA-Z_$][a-zA-Z_$0-9]*"; if (valor.matches(regexNum)) { System.out.println("这是一个数字"); } if (valor.matches(regexVar)) { System.out.println("这是一个变量"); }

【讨论】:

  • 应该也加上美元符号!
  • 感谢@flkes $ 符号添加
【解决方案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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 2010-09-15
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多