我想确保字符串是合法的int
。这意味着它必须是一个数字(没有“。”)。但是,空格 允许在开始时和合法值之后。以下示例说明:
"53" - good.
"5 " - good.
" 5" - good.
"5 3" - bad
我尝试了(\\d|-\\d| \\d| -\\d)+
答案 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.");
}