Regex 重写规则接受下划线和点

Regex 重写规则接受下划线和点,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,在下面的htaccess代码中,我想将URL从site.com/user.php?id=user\u id更改为site.com/u/user\u id。但是,只有当用户名是字母数字时,此代码才有效。如果用户名包含下划线或点,我不知道该怎么办 RewriteRule ^u/(\w+)/?$ user.php?id=$1 \w+是否有替代品?使用。匹配任何字符,或使用[]定义允许的字符列表 元字符\w匹配任何字母、数字或下划线 如果您还想匹配其他字符,那么应该使用其他字符 元字符匹配任何字符,因

在下面的htaccess代码中,我想将URL从
site.com/user.php?id=user\u id
更改为
site.com/u/user\u id
。但是,只有当用户名是字母数字时,此代码才有效。如果用户名包含下划线或点,我不知道该怎么办

RewriteRule ^u/(\w+)/?$ user.php?id=$1
\w+
是否有替代品?

使用。匹配任何字符,或使用[]定义允许的字符列表 元字符
\w
匹配任何字母、数字或下划线

如果您还想匹配其他字符,那么应该使用其他字符

元字符
匹配任何字符,因此这将是一个选项:
重写规则^u/(.+)/?$user.php?id=$1

或者,您可以在
[]
之间定义一组允许的字符。要允许字母数字字符、下划线和点,可以使用
重写规则^u/([a-z0-9\.]+)/?$user.php?id=$1
。请注意,在本例中必须替换
,否则它将被解释为上面提到的元字符并匹配任何字符


您还可以匹配除
/
之外的任何字符,这在匹配URL时特别有用:
重写规则^u/([^/]+)/?$user.php?id=$1
[]
中的前导
^
使字符组匹配除所列字符以外的任何字符,因此在本例中,除
/
以外的任何字符都匹配,谢谢。你的回答帮了大忙+1:)