我的简单案例中的正则表达式

时间:2013-06-06 12:10:41

标签: java regex

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

例如,#31 5 2 0000 12

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

4 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分: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*$"

答案 2 :(得分:0)

如果您至少需要数字

,请检查此项
^#\s*\d[\d\s]*$
  • 启动
  • 散列
  • 可选空格
  • 可选数字和空格

答案 3 :(得分:0)

^#(\ d + \ S')* $

接受#,#15,#2 14 52 ...... 如果你想一次接受多个空间改变?用*