只有整数字符串的 Java 正则表达式是什么?
我正在尝试,但到目前为止没有得到好的结果...if (nuevo_precio.getText().matches("/^\\d+$/"))
我正在尝试,但到目前为止没有得到好的结果...if (nuevo_precio.getText().matches("/^\\d+$/"))
在 Java 正则表达式中,您不使用分隔符:/
nuevo_precio.getText().matches("^\\d+$")
由于(或)强制整个字符串与返回的模式匹配,因此和实际上是多余的,可以在不影响结果的情况下删除。这与JavaScript,PHP(PCRE)或Perl相比略有不同,其中“match”意味着在目标字符串中找到与模式匹配的子字符串。String.matches()
Matcher.matcher()
true
^
$
nuevo_precio.getText().matches("\\d+") // Equivalent solution
但是,将其留在那里并没有什么坏处,因为它表示意图并使正则表达式更具可移植性。
要限制为 4 位数字:
"\\d{4}"
正如其他人已经说过的那样,java不使用分隔符。您尝试匹配的字符串不需要尾部斜杠,因此您的字符串应该是 。/^\\d+$/
^\\d+$
现在我知道这是一个老问题,但这里的大多数人都忘记了一些非常重要的事情。整数的正确正则表达式:
^-?\d+$
分解:
^ String start metacharacter (Not required if using matches() - read below)
-? Matches the minus character (Optional)
\d+ Matches 1 or more digit characters
$ String end metacharacter (Not required if using matches() - read below)
当然,在Java中,您需要双反斜杠而不是常规反斜杠,因此与上述正则表达式匹配的Java字符串是^-?\\d+$
注意:如果使用 :^$
.matches()
欢迎来到Java的错误命名方法...它尝试并匹配所有输入。不幸的是,其他语言也纷纷效仿:(
.matches()
- 取自这个答案
无论如何,正则表达式仍然可以与即使它是可选的,我仍然会包含它以获得正则表达式的可读性,就像在所有其他情况下,当你默认不匹配整个字符串时(如果你不使用,这是大多数时候),你会使用这些字符^$
.matches()
要匹配相反的内容:
^\D+$
这是所有不是数字的东西。(非数字)否定(数字)。\D
\D
\d
请注意,这仅适用于整数。双打的正则表达式:
^-?\d+(\.\d+)?$
分解:
^ String start metacharacter (Not required if using matches())
-? Matches the minus character. The ? sign makes the minus character optional.
\d+ Matches 1 or more digit characters
( Start capturing group
\.\d+ A literal dot followed by one or more digits
)? End capturing group. The ? sign makes the whole group optional.
$ String end metacharacter (Not required if using matches())
当然,在Java中,而不是像上面的例子那样,你会有双反斜杠。\d
\.