目前,我的.htaccess文件中包含以下代码,它将A-Z、1-9、a-z和-输入重写为PHP文件:
.htaccess
A-Z
1-9
a-z
-
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?url=$1 [L]
我需要把+添加到正则表达式中,我该怎么做呢?我试过了
+
RewriteRule ^([A-Za-z0-9-+]+)/?$ index.php?url=$1 [L]
我还看了几个正则表达式备忘单,它们真的没有什么用。
au9on6nz1#
从表面上看,您发布的正则表达式是“OK”的,应该可以工作(尽管您应该考虑反斜杠转义字符类中的最后一个连字符,或者将其移动到字符类中的最后一个字符,以避免将来将其解释为 range 指示符的任何歧义)。例如(复制/粘贴以下内容):
RewriteRule ^([A-Za-z0-9+-]+)/?$ index.php?url=$1 [L]
(This已删 debugging 误字符- * 见下文 *。)或者,如果您也可以匹配下划线(_),那么您可以使用\w(word chars)速记字符类来稍微简化它:^([\w+-]+)/?$然而,你有一个软连字符(U+00AD)-肉眼看不见-嵌入在字符类的每个范围之间,这可能会破坏正则表达式。例如,展开隐藏的unicode字符,这是你试图使用的实际(无效)正则表达式:
_
\w
^([\w+-]+)/?$
U+00AD
^([A-ZU+00ADa-zU+00AD0-9U+00AD-+]+)/?$
1条答案
按热度按时间au9on6nz1#
从表面上看,您发布的正则表达式是“OK”的,应该可以工作(尽管您应该考虑反斜杠转义字符类中的最后一个连字符,或者将其移动到字符类中的最后一个字符,以避免将来将其解释为 range 指示符的任何歧义)。
例如(复制/粘贴以下内容):
(This已删 debugging 误字符- * 见下文 *。)
或者,如果您也可以匹配下划线(
_
),那么您可以使用\w
(word chars)速记字符类来稍微简化它:^([\w+-]+)/?$
然而,你有一个软连字符(
U+00AD
)-肉眼看不见-嵌入在字符类的每个范围之间,这可能会破坏正则表达式。例如,展开隐藏的unicode字符,这是你试图使用的实际(无效)正则表达式: