Php 允许-&引用;及"&引用;在preg_替换中

Php 允许-&引用;及"&引用;在preg_替换中,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,这允许在$username中使用“字母”和“数字”,删除所有其他内容 但是,我怎样才能允许混合中使用“点符号呢?另外,“-”也很好 多谢各位 只需将它们添加到角色类中: $username = preg_replace("/[^\p{L}|\p{N}]/u", "", html_entity_decode($username)); 。我已经删除了|,因为它显然已经包含在character类中(并且显然不应该在character类中用作替代-毕竟,类是替代) 只需将它们添加到角色类中: $use

这允许在
$username
中使用“字母”和“数字”,删除所有其他内容

但是,我怎样才能允许混合中使用
点符号呢?另外,
“-”
也很好


多谢各位

只需将它们添加到角色类中:

$username = preg_replace("/[^\p{L}|\p{N}]/u", "", html_entity_decode($username));

。我已经删除了
|
,因为它显然已经包含在character类中(并且显然不应该在character类中用作替代-毕竟,类是替代)

只需将它们添加到角色类中:

$username = preg_replace("/[^\p{L}|\p{N}]/u", "", html_entity_decode($username));

。我删除了
,因为它显然已经被字符类覆盖(而且显然不应该在字符类中用作替换,毕竟类是一个交替)

\

我不能诚实地理解你的正则表达式的其余部分,但这就是你使用特殊字符的方式


我将使用的正则表达式是:
[a-z0-9\-\.]
(添加不区分大小写的标志)

\

我不能诚实地理解你的正则表达式的其余部分,但这就是你使用特殊字符的方式


我将使用的正则表达式是:
[a-z0-9\-\.]
(添加不区分大小写的标志)

在字符类中没有意义,因此不需要转义<代码>-如果是第一个或最后一个字符,则没有任何意义

$var = 'Василий. Теркин-';
$username = preg_replace('/[^\p{L}\p{N}.-]/u', "", $var);
var_dump($username); // Василий.Теркин-

在字符类中没有意义,因此不需要转义<代码>-如果是第一个或最后一个字符,则没有任何意义

$var = 'Василий. Теркин-';
$username = preg_replace('/[^\p{L}\p{N}.-]/u', "", $var);
var_dump($username); // Василий.Теркин-


我从未见过
\p{L}
语法。“有人有这方面的文件吗?”洛克塔兹对我也没有。但在这里,我找到了:找到了!显然是unicode匹配。我从未见过
\p{L}
语法。“有人有这方面的文件吗?”洛克塔兹对我也没有。但在这里,我找到了:找到了!这显然是用于unicode匹配。不需要在字符组中转义
。另外,可以将
-
作为第一个字符以避免转义:例如
[-.blah]
因此
/[^\p{L}\p{N}\-\.}]/u
像这样?OPs正则表达式匹配unicode字符属性。我认为这不仅仅包括a-z,所以你的并不等同。@James
只是字符组(
[]
)中的一个普通字符。@James
只在括号中使用。在括号中,它的字面意思是
|
不需要在字符组中转义。另外,可以将
-
作为第一个字符以避免转义:例如
[-.blah]
因此<代码>/[^\p{L}\p{N}\-\.}]/u这样?OPs regex与unicode字符属性匹配。我认为这不仅仅包括a-z,所以你的并不等同。@James
只是字符组(
[]
)中的一个普通字符。@James
只在括号中使用。在括号中,它的字面意思是
|
。我不想使用(a-z),因为有些名字可能是外来的,例如,我相信(a-z)@Tim?“尼娜”呢etc@James是的,我是给答复者写信的,不是给你的。这个正则表达式不是你想要的。我不想使用(a-z),因为有些名字可能是外来的。例如,我相信(a-z)@Tim?“尼娜”呢etc@James是的,我是给答复者写信的,不是给你的。这个正则表达式不是你想要的。第一个答案是+1,不要试图强制一个
[a-z]
,转义字符不是必须总是出现在字符组的开头吗?我似乎记得这样的事情。@Tim没有。即使是在character类中有特殊含义的
-
,也可能在开头或结尾抛出。这里唯一的一点是避免模棱两可。好的,谢谢你澄清这一点。对于正则表达式,我经常需要阅读PCRE手册页。我永远记不住细节了。+1第一个答案是不要强迫一个
[a-z]
转义字符不一定总是出现在字符组的开头吗?我似乎记得这样的事情。@Tim没有。即使是在character类中有特殊含义的
-
,也可能在开头或结尾抛出。这里唯一的一点是避免模棱两可。好的,谢谢你澄清这一点。对于正则表达式,我经常需要阅读PCRE手册页。我永远记不起细节了。