匹配未知长度的字符串 - 我正在从表单中获取用户的输入
预期输入格式为[number][comma][number][comma] etc...
。此输入的示例为3,43,1,238,24
。
只要输入允许,模式就可以继续,并且接受任何长度数字。
我想使用正则表达式来确保用户已正确格式化其条目。首先,我使用str_replace去除响应中的任何空格(以防用户在逗号后输入空格)。
但我对如何匹配未知长度的模式感到困惑。以下是否有效?
/\d+,\d+/
我的印象是这不起作用。它只匹配模式中的前两个数字,后面没有任何内容。有什么想法吗?
如果重要,我正在使用 PHP v 5.6.10
答案 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);
希望它有所帮助!