2

我想要一个正则表达式来验证一个字符串是否是它以 # 开头的格式,然后是随机数(长度是无限的),数字之间的空格也是任意的

例如,#31 5 2 0000 12

我想出了正则表达式^[\\#][0-9]$,但似乎是错误的。任何人都可以帮助我吗?

4

4 回答 4

2

^[\\#][0-9]$将匹配一个数字后跟#符号。你需要

^#\d+(\s+\d+)*$

Posix 格式也将允许任何其他语言字符。

^#[[:digit:]]+([[:space:]]+[[:digit:]]+)*$

注意:这是一个有效的正则表达式。您可能需要进行一些调整以与 java 风格兼容。

于 2013-06-06T12:13:26.590 回答
2

这是该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*$"
于 2013-06-06T12:15:26.533 回答
0

如果您至少需要一个数字,请选中此项

^#\s*\d[\d\s]*$
  • 开始
  • 哈希
  • 可选空格
  • 数字
  • 可选数字和空格
  • 结尾
于 2013-06-06T12:15:28.270 回答
0

^#(\d+\s?)*$

这个接受 #, #15, #2 14 52... 如果你想接受不止一次的空格一起改变?带 *

于 2013-06-06T12:28:00.393 回答