我需要验证输入:有效的变量是数字或空字符串.相应的正则表达式是什么?
String pattern = "\d+|<what shoudl be here?>";
Run Code Online (Sandbox Code Playgroud)
UPD:请不要建议"\ d*",我只是好奇如何在regexp中告诉"空字符串".
pol*_*nts 15
在这种特殊情况下,^\d*$
可以工作,但一般来说,匹配pattern
或空字符串,您可以使用:
^$|pattern
Run Code Online (Sandbox Code Playgroud)
^
并且$
分别是字符串锚点的开头和结尾.|
用于表示替代物,例如this|that
.在所谓多行模式(Pattern.MULTILINE/(?m)
在Java中)时,^
与$
匹配的开始和结束线来代替.现在\A
和\Z
分别是字符串开头和结尾的锚点.
如果您处于多线模式,则匹配空字符串\A\Z
.^$
将匹配字符串中的空行.
以下是一些例子来说明以上几点:
String numbers = "012345";
System.out.println(numbers.replaceAll(".", "<$0>"));
// <0><1><2><3><4><5>
System.out.println(numbers.replaceAll("^.", "<$0>"));
// <0>12345
System.out.println(numbers.replaceAll(".$", "<$0>"));
// 01234<5>
numbers = "012\n345\n678";
System.out.println(numbers.replaceAll("^.", "<$0>"));
// <0>12
// 345
// 678
System.out.println(numbers.replaceAll("(?m)^.", "<$0>"));
// <0>12
// <3>45
// <6>78
System.out.println(numbers.replaceAll("(?m).\\Z", "<$0>"));
// 012
// 345
// 67<8>
Run Code Online (Sandbox Code Playgroud)
matches
在Java中,matches
尝试将模式与整个字符串进行匹配.
这是真的String.matches
,Pattern.matches
和Matcher.matches
.
这意味着有时候,matches
当Java 对其他风格和/或其他Java正则表达式方法必要时,可以省略锚点.
/^\d*$/
Run Code Online (Sandbox Code Playgroud)
匹配0或更多数字之前或之后没有任何内容.
说明:
'^'表示行首.'$'表示行尾.'*'匹配0或更多次出现.因此,模式匹配整个行与0或更多位数.
归档时间: |
|
查看次数: |
13545 次 |
最近记录: |