我希望能够使用Ruby 1.8.7匹配以下所有情况。
/pages/multiedit/16801,16809,16817,16825,16833
/pages/multiedit/16801,16809,16817
/pages/multiedit/16801
/pages/multiedit/1,3,5,7,8,9,10,46
我目前有:
\/pages\/multiedit\/\d*
这与第一组数字相匹配。例如:
"/pages/multiedit/16801,16809,16817,16825,16833"[/\/pages\/multiedit\/\d*/]
# => "/pages/multiedit/16801"
例如,请参阅http://rubular.com/r/ruFPx5yIAF。
感谢你的帮助,正则表达的众神。
答案 0 :(得分:2)
\/pages\/multiedit\/\d+(?:,\d+)*
示例:http://rubular.com/r/0nhpgki6Gy
编辑:更新为不捕获任何内容......虽然性能损失可以忽略不计。 (谢谢田人)
目前接受的答案
\/pages\/multiedit\/[\d,]+
可能不是一个好主意,因为它也会匹配以下字符串
.../pages/multiedit/,,,
.../pages/multiedit/,1,
我的回答要求第一个逗号前至少有一个数字,逗号之间至少有一个数字,并且必须以数字结尾。
答案 1 :(得分:1)
我会用:
/\/pages\/multiedit\/[\d,]+/
以下是http://rubular.com/r/h7VLZS1W1q
模式的演示 [\d,]+
表示“找到一个或多个数字或逗号”
\d*
不起作用的原因是它意味着“找到零个或多个数字”。模式搜索一旦进入逗号就会停止。您必须告诉引擎可以找到数字和逗号。