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之间应该有一个逗号,并且结尾没有逗号。