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


Number followed by any amount of [comma][number]

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

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

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

但是我对如何匹配未知长度的模式感到困惑。下面的操作可行吗?

/'d+,'d+/

我的印象是这行不通。它只匹配模式中的前两个数字,而不匹配后面的数字。什么好主意吗?

如果有关系,我使用PHP v 5.6.10

您可以使用/^'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这样的输入视为"头"(3)后面跟着(任意多个)逗号-数字对(,43 ,1 ,238 ,24)。

您可以使用这种模式:/('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);

希望有帮助!