如果字符串中包含这些字符,则语句将返回 true。“-1234567890”。如果字符串除了这些字符之外还有其他内容,则语句将返回 false。字符可以是任意顺序和任意数量,只要它包含这些字符即可。所以 String a = "12-3"; 将返回 true 但 String b = "1a3-"; 将返回错误。** 它也不能通过 for 循环。
问问题
59 次
3 回答
2
如果您的输入是一个名为的字符串,input
您可以这样做
input.matches("^[0-9\\-]*$")
这回答了您的确切问题-但我支持该评论说明要了解有关正则表达式的更多信息,您会发现它比您想象的更有用。
于 2013-09-22T04:07:04.153 回答
0
首先,matches 已经有 ^ $ 字符,所以你不必输入这些字符。\\d
表示[0-9]
并且-
不是特殊字符,因此您不必输入\\
并且应该 + 而不是 * 因为我假设您不想将空字符串与您的正则表达式匹配。
所以你应该使用:
s.matches("[\\d-]+");
代码 :
String arr[] = {"1-23a456-", "a123","123-","-","1","123123fwdf234","123-3453",""};
for (String string : arr) {
System.out.println(string + "==>" + string.matches("[\\d-]+"));
}
输出 :
1-23a456-==>false
a123==>false
123-==>true
-==>true
1==>true
123123fwdf234==>false
123-3453==>true
==>false \\ empty string
于 2013-09-22T15:07:01.370 回答
0
我会说
String str;
str.matches("^[0-9-]*$")
于 2013-09-22T04:32:23.073 回答