我应该使用Java Regex Pattern还是简单的系统格式?

时间:2015-10-08 18:23:47

标签: java regex

我目前正在尝试设置程序,因此用户必须输入特定的字符串,例如DeskID,然后输入2-3个整数,因此:DeskNO10或{{1} }

此刻,我尝试过:

DeskNO42

这不起作用 - 如果我只是使用if(Pattern.matches("[DeskNO0-9]",desk)) { System.out.println("Accepted"); } else { System.out.println("Rejected"); } println%s来使用简单的%2d语句,是否有任何可行的建议或建议是否可行p>

3 个答案:

答案 0 :(得分:2)

你可以做到

if (desk.matches("DeskNO\\d{2,3}")) {

答案 1 :(得分:2)

你的正则表达式使用字符类,即括在方括号中的东西。这意味着表达式将接受方括号中定义的任何单个字符,即Desk,{{ 1}},NO0,...,1。这肯定是你想要的。

正确的正则表达式是

9

但是,方法的选择取决于你:正则表达式可能对于简单的工作而言太过分了。您可以测试字符串"DeskNO\\d{2,3}" ,然后使用startsWith("DeskNO")后缀,并检查它是否是两位或三位数。

答案 2 :(得分:1)

尝试:

if(Pattern.matches("DeskNO[0-9]{2,3}",desk))

[DeskNO0-9]是一个字符类,因此它只匹配括号内的一个字符,例如De9等,这就是为什么它没有& #39;工作。

DeskNO[0-9]{2,3} DeskNO是强制性部分,而[0-9]{2,3}表示应该跟随两位或三位数。