具有特殊字符的正则表达式

时间:2012-08-23 13:56:29

标签: regex url-rewriting

我正在使用一些网址重写我正在处理的网站。我的重写工作正常,数字,字母和 - 使用这个:

 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$    characters.php?realm=$1&name=$2 [NC]

但是我需要规则的第一部分允许'允许',并且我需要规则的第二部分来允许特殊字符,例如ú,æ,ä,ç,以及几乎所有的位于here的字符,类似于字母。

我知道特殊字符很糟糕,但我不是允许它们用于字符名称的字符。我只需要在规则中允许它们,以便具有这些名称的字符可以访问我的应用程序。

感谢。

编辑:第一部分现在有效。目前试用第二部分。

编辑#2:为第二部分([^ /] +)尝试两种解决方案并排除某些字符允许显示信息而不是导致404错误。但是它导致我的CSS不显示,而是试图调用/ css / error而不是/ css。它根据chrome导致css文件的重定向循环。

如果字符数据无效,则应将某些内容重定向到/ error的唯一方法。此应用程序用于从暴雪角色api中提取角色信息,因此重写角色可用于重写。

我不确定这是否重要,但是当我允许将ú与az和AZ一起包含时,我收到404错误,指出无法找到页面而不是显示ú在它的位置显示º。

2 个答案:

答案 0 :(得分:0)

^([a-zA-Z0-9 _'-] +)/([^ 此处排除的字符 ] +)$

在第一个括号内添加“'”应该允许它匹配。就第二种情况而言,你可能想要使用否定的字符类,并列出你允许的字符。

编辑以在“ - ”之前移动单引号。

答案 1 :(得分:0)

我能想出的最简单的解决方案是ú显示为例如,所以我只是简单地将ú包含在规则中。不确定它是否是最佳方式,但现在可以使用。