0

我希望能够使用 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

感谢您的帮助,正则表达式之神。

4

2 回答 2

2
\/pages\/multiedit\/\d+(?:,\d+)*

示例:http ://rubular.com/r/0nhpgki6Gy

编辑:更新为不捕获任何东西......虽然性能影响可以忽略不计。(感谢锡人)

目前接受的答案

\/pages\/multiedit\/[\d,]+

可能不是一个好主意,因为这也将匹配以下字符串

.../pages/multiedit/,,,
.../pages/multiedit/,1,

我的回答要求第一个逗号前至少有一个数字,逗号之间至少有一个数字,并且必须以数字结尾。

于 2013-05-09T01:01:13.070 回答
1

我会使用:

/\/pages\/multiedit\/[\d,]+/

这是http://rubular.com/r/h7VLZS1W1q上的模式演示

[\d,]+意思是“找到一个或多个数字或逗号”

\d*不起作用的原因是它意味着“找到零个或多个数字”。一旦模式搜索遇到逗号,它就会停止。您必须告诉引擎可以查找数字逗号。

于 2013-05-09T03:54:37.970 回答