我想要一个正则表达式来验证一个字符串是否是它以 # 开头的格式,然后是随机数(长度是无限的),数字之间的空格也是任意的。
例如,#31 5 2 0000 12
我想出了正则表达式^[\\#][0-9]$
,但似乎是错误的。任何人都可以帮助我吗?
^[\\#][0-9]$
将匹配一个数字后跟#
符号。你需要
^#\d+(\s+\d+)*$
Posix 格式也将允许任何其他语言字符。
^#[[:digit:]]+([[:space:]]+[[:digit:]]+)*$
注意:这是一个有效的正则表达式。您可能需要进行一些调整以与 java 风格兼容。
这是该normal* (special normal*)*
模式的经典用例:
^#\d+(\s+\d+)*$
# as a Java string:
"^#\\d+(\\s+\\d+)*$"
注意:如果你使用.matches()
,这在 Java 中确实是错误的,你可以删除^
和$
锚,因为它们会自动插入。Java中的真正模式匹配是用.find()
(String
没有,但Matcher
有)完成的
注意 2:这将不允许尾随空格;如果可以有尾随空格,请更改为:
^#\d+(\s+\d+)*\s*$
# as a Java string:
"^#\\d+(\\s+\\d+)*\\s*$"
如果您至少需要一个数字,请选中此项
^#\s*\d[\d\s]*$
^#(\d+\s?)*$
这个接受 #, #15, #2 14 52... 如果你想接受不止一次的空格一起改变?带 *