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

Php 数字后跟任意数量的[逗号][数字],php,regex,Php,Regex,匹配长度未知的字符串-我从表单中获取用户的输入。 预期输入的格式为[number][comma][number][comma]等。此输入的示例为3,43,1238,24 只要输入允许,模式就可以继续,并且可以接受任何长度数字 我希望使用正则表达式来确保用户已正确格式化其条目。首先,我使用str_replace去掉响应中的所有空格(以防用户输入逗号后的空格) 但我对如何匹配长度未知的图案感到困惑。下面的方法行吗 /\d+,\d+/ 我的印象是这行不通。它将只匹配模式中的前两个数字,后面什么都不匹

匹配长度未知的字符串-我从表单中获取用户的输入。
预期输入的格式为
[number][comma][number][comma]等。

此输入的示例为
3,43,1238,24

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


我希望使用正则表达式来确保用户已正确格式化其条目。首先,我使用str_replace去掉响应中的所有空格(以防用户输入逗号后的空格)

但我对如何匹配长度未知的图案感到困惑。下面的方法行吗

/\d+,\d+/
我的印象是这行不通。它将只匹配模式中的前两个数字,后面什么都不匹配。有什么想法吗


如果重要的话,我使用的是PHPV5.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,1238,24
这样的输入视为一个“头”(
3
),后跟(任意多个)逗号数对(
,43
,1,238,
,24

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

由于PHP PCRE没有全局(g)修饰符,您应该删除它并使用
preg\u match\u all()

例如:

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

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

print_r($matches);

希望有帮助

为什么不自己试试呢?!()“我想使用正则表达式来确保用户输入的格式正确。”这个答案似乎没有帮助。嗨@melpomene,我相信通过我提出的解决方案,他可以从输入中捕获数字,即使用户在逗号之前或之后输入空格。是的,如果输入格式正确,您的正则表达式恰好在某种程度上完成了提取数字的工作(不过,
[^,]
在其中应该做什么?)。但问题是如何验证良好形式,而不是假设它。根据规则,您自己的示例(
…5 34,
)无效:5和34之间应该有一个逗号,并且结尾没有逗号。