PHP正则表达式删除除句点以外的非字母数字

PHP正则表达式删除除句点以外的非字母数字,php,regex,Php,Regex,我很难找到解决办法。如何避免在这个正则表达式中丢失句点 $text = preg_replace('~[^\\pL\d]+~u', '-', $text); 这将以case-instive的方式替换任何不是0-9、a-z或句点的内容 这将以case-instive的方式替换任何不是0-9、a-z或句点的内容。只需将点添加到角色类中: $text = preg_replace('~[^\\pL\d.]+~u', '-', $text); 您正在使用一个否定字符类[^部分,因此任何与该字符类中的

我很难找到解决办法。如何避免在这个正则表达式中丢失句点

$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
这将以case-instive的方式替换任何不是0-9、a-z或句点的内容


这将以case-instive的方式替换任何不是0-9、a-z或句点的内容。

只需将点添加到角色类中:

$text = preg_replace('~[^\\pL\d.]+~u', '-', $text);
您正在使用一个否定字符类[^部分,因此任何与该字符类中的任何字符不匹配的字符都将被替换


顺便说一下,您的问题标题与正则表达式不匹配。

只需将点添加到您的字符类:

$text = preg_replace('~[^\\pL\d.]+~u', '-', $text);
您正在使用一个否定字符类[^部分,因此任何与该字符类中的任何字符不匹配的字符都将被替换


顺便说一下,您的问题标题与您的正则表达式不匹配。

这到底是什么\\pL?AFAIK这与反斜杠以及字母p和L匹配

这就是你的意思吗

<?php 
echo preg_replace('/[^a-z0-9.]+/ui', '-', 'abc093.-23.-2ªıØẞÆ.23.OAIFJ→øæł¶iwoeweo');
?>
结果:
abc093.-23.-2-.23.OAIFJ-iwoeweo

这到底是什么\\pL?如果这与反斜杠和字母p和L匹配

这就是你的意思吗

<?php 
echo preg_replace('/[^a-z0-9.]+/ui', '-', 'abc093.-23.-2ªıØẞÆ.23.OAIFJ→øæł¶iwoeweo');
?>
结果:
abc093.-23.-2-.23.OAIFJ iwoeweo

不要进行双转义,为了完全兼容unicode,数字是:\pN然后:


不要进行双转义,为了完全兼容unicode,数字是:\pN然后:


不需要逃避圆点,虽然我想它不会伤害我。@jeroen今天我学到了!未逃避的圆点会让我在正则表达式中颤抖。:-不需要逃避圆点,尽管我想它不会伤害我。@jeroen今天我学到了!未逃避的圆点会让我在正则表达式中颤抖。:-这是来自文件的slugify函数,我显然在f中选择了错误的语句unction!thanksit来自文件的slagify函数,我显然在函数中选择了错误的语句!谢谢