我在字符串中有一个金额,我想检查是否还有其他数据,点和逗号。因此,如果存在除[0123456789,.]
之外的任何其他内容,则应返回false。
我目前正在检查:
if ("495.6A,B76".matches(".*[0123456789].*")) {
返回true,因为字符确实在字符串中。我只想检查字符串是否只包含这些字符?
答案 0 :(得分:4)
您可以匹配已知符号:
^[\\d,.]+$
视觉表现:
PS:请注意,如果您使用的是String#matches
,则不需要锚点^ and $
(行开头和行结束),因为这些是隐含的。
因此:
"495.6A,B76".matches("^[\\d,.]+$");
与:
相同"495.6A,B76".matches("[\\d,.]+");
和都会返回false。
答案 1 :(得分:3)
String regex = "^[0-9,.]+$"
^
说“以”开头“
+
表示前面的一个或多个(如果空字符串匹配,请使用*
)
$
说“以...结尾”
[0-9]
== [0123456789]
;另外,[0-9]
== [\\d]
。
因为每个人都喜欢图片,所以你走了:
编辑:
未发现您使用的是.matches()
,这会自动匹配整个字符串,因此您可以移除^
和{{ 1}}锚。
答案 2 :(得分:1)
您可以使用字符类[]
^[0-9,.]+$
正则表达式:
^ the beginning of the string
[0-9,.]+ any character of: '0' to '9', ',', '.' (1 or more times)
$ before an optional \n, and the end of the string
答案 3 :(得分:1)
if (param.matches ("[0-9.]+"))
System.out.println ("matches" );
else
System.out.println ("doesn't match");
答案 4 :(得分:0)
如果你有一小组定义的字符,你可以使用否定运算符,如下所示:
[^\d,\.,]
这将匹配任何非数字字符。
另一种方法是查看整个字符串是否只是您想要的数字:
^[\d\.,]$
你可能想要的是更具体的东西,这是一种货币形式(两位小数),如下所示:
\d+\.\d\d