Regex 重写规则:仅允许数字和特定字符串以逗号分隔

Regex 重写规则:仅允许数字和特定字符串以逗号分隔,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我试图重写URL,只允许数字和(可选)单词“all”用逗号分隔 例如,类似这样的内容:mypage/23,15,all,2,all 我试过了,但有个问题。首先,这是我的规则(可能语法错误): 这里的问题是,如果writemypage/23有效(正确),mypage/23,all有效(正确),mypage/23,all,a有效(因为它检测到“all”中的“a”,所以是错误的) 如何修改规则以仅接受整个单词“all” 谢谢。您可以使用此正则表达式: RewriteRule ^mypage/((?:\

我试图重写URL,只允许数字和(可选)单词“all”用逗号分隔

例如,类似这样的内容:mypage/23,15,all,2,all

我试过了,但有个问题。首先,这是我的规则(可能语法错误):

这里的问题是,如果writemypage/23有效(正确),mypage/23,all有效(正确),mypage/23,all,a有效(因为它检测到“all”中的“a”,所以是错误的)

如何修改规则以仅接受整个单词“all”


谢谢。

您可以使用此正则表达式:

RewriteRule ^mypage/((?:\d+|all)(,(?:\d+|all))*)/?$ target-url?str=$1 [L,NC,QSA]

字符类中没有字符分组,即
[…]

试试这个:我认为它应该可以工作

/([\d]+,(all)+)

[] for optional
() for grouping

什么?:代表?
(?:…)
被称为非捕获组,因此这将只利用规则而不捕获它,对吗?对,因此如果URI是
/mypage/123,all,78
,它将不捕获单个数字或
全部
,但外部
(…)
将捕获整个内容,即
123,all,78
在捕获组中#1。
/([\d]+,(all)+)

[] for optional
() for grouping