我的有效字符串应为"1234" or " 1234"
在开头允许one or zero space
然后是任意数量的digits
那么这个正则表达式应该是什么?
答案 0 :(得分:4)
您可以使用:
^ ?\d+$
这样更容易阅读:
^[ ]?\d+$
请参阅demo。
要测试您是否匹配,您可以(例如):
if (subjectString.matches("[ ]?\\d+")) {
// It matched!
}
else { // nah, it didn't match... }
此处您不需要^
和$
锚点,因为matches
方法会查找完全匹配。
<强>解释强>
^
锚点断言我们位于字符串的开头。根据使用的方法,可能不需要这些锚。[ ]?
匹配零个或一个空格。不需要括号,但它们更容易阅读。你可以删除它们。 不要使用\s
,因为它也会匹配换行符和标签。\d+
匹配一个或多个数字$
锚点断言我们位于字符串的末尾答案 1 :(得分:3)
应为\\s?\\d+
System.out.println(Pattern.matches("\\s?\\d+", "1234")); // true
System.out.println(Pattern.matches("\\s?\\d+", " 1234")); // true
System.out.println(Pattern.matches("\\s?\\d+", " 1234")); // false
\s
表示空格,?
表示零或一次出现。 \d
对应于+
的数字,表示至少有一次出现。
如果只允许空格字符(例如没有标签),请使用( )?\\d+
答案 2 :(得分:2)
答案 3 :(得分:2)
如果您的输入数据必须只有一个空格(不是空格),那么您需要的正则表达式为?\d+
(注意“?”之前的空格)。
另一方面,如果您的输入数据必须包含空格,那么您需要将正则表达式调整为:
\s?\d+
空格字符可以是:
A space character
A tab character
A carriage return character
A new line character
A vertical tab character
A form feed character
请注意,如果您需要丢弃数字后面的所有字符,则不必匹配instace 1234fff
,那么您可以将正则表达式修复为:\s?\d+\b
(这将让你的正则表达式有一个边界。)
请记住在java代码中转义反斜杠,因此\s?\d+
将为\\s?\\d+
下面你可以找到一个空格的正则表达式,后跟只有数字。