使用正则表达式验证它,我的方式不起作用

时间:2013-05-29 11:28:01

标签: java regex string

我想确保字符串是合法的int。这意味着它必须是一个数字(没有“。”)。但是,空格 允许在开始时和合法值之后。以下示例说明:

"53" - good.
"5 " - good.
" 5" - good.
"5 3" - bad

我尝试了(\\d|-\\d| \\d| -\\d)+

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

^\\s*([+-]?\\d+)\\s*$

^匹配字符串的开头

\\s*说明任何尾随空格

[+-]?说明了可能的迹象

$确保它是字符串的结尾。

正如@Dukeling所指出的,如果您使用^,则不需要锚($matches())。

答案 1 :(得分:2)

你必须使用正则表达式吗?您可以使用Integer.parseInt(myString)并抓住NumberFormatException

try
{
  Integer.parseInt(myString.trim());   // trim removes leading and trailing whitespace
  //Will work for "53", " 5" and "5 "
  System.out.println(myString+ " is an integer.");
}
catch (NumberFormatException ex)
{
  System.out.println(myString+ " is not an integer.");
}