我需要验证输入:有效的变量是数字或空字符串.相应的正则表达式是什么?
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 次 |
| 最近记录: |