数字后跟任意数量的[逗号] [数字]

时间:2015-07-19 00:30:36

标签: php regex

匹配未知长度的字符串 - 我正在从表单中获取用户的输入 预期输入格式为[number][comma][number][comma] etc...。此输入的示例为3,43,1,238,24

只要输入允许,模式就可以继续,并且接受任何长度数字。

我想使用正则表达式来确保用户已正确格式化其条目。首先,我使用str_replace去除响应中的任何空格(以防用户在逗号后输入空格)。

但我对如何匹配未知长度的模式感到困惑。以下是否有效?

/\d+,\d+/

我的印象是这不起作用。它只匹配模式中的前两个数字,后面没有任何内容。有什么想法吗?

如果重要,我正在使用 PHP v 5.6.10

2 个答案:

答案 0 :(得分:4)

您使用/^\d+(?:,\d+)*$/之类的内容。这意味着:

^      # beginning of string
\d+    # one or more digits
(?:    # group (but don't capture)
  ,    #   a comma
  \d+  #   one or more digits
)*     # ... zero or more of this group
$      # end of string

这会将3,43,1,238,24之类的输入视为" head" (3)后跟(任意多个)逗号对(,43 ,1 ,238 ,24)。

答案 1 :(得分:-1)

您可以使用此模式:/(\d+)[^,]?+/gm

https://regex101.com/r/gF1tO3/1

由于PHP PCRE没有全局(g)修饰符,您应该将其删除并使用preg_match_all()

示例:

$str = '55, 44, 23 , 65 , 99,
234, 5 34,';

preg_match_all('/(\d+)[^,]?+/', $str, $matches);

print_r($matches);

希望它有所帮助!