正则表达式将非字母替换为"-",但保留任何句点



我试图从文件路径中剥离所有非字母,但我需要在最后留下扩展名。

文件的例子:$text = cat.jpg

我目前使用这个$text = preg_replace('/[^\pLd]+/u', '-', $text);结果:cat-jpg

但这也将任何句号转换为连字符,我四处看看,并尝试了我从其他帖子中找到的,但他们只是把句号一起删除了。

您可以使用这个基于交替和反向查找的正则表达式进行搜索:

[^pLpN.]+|.(?![^.]+$)

RegEx演示

RegEx分手:

[^pLpN.]+  # Search 1 or more of any char that is not DOT and letter and number (unicode)
|            # OR
.           # search for DOT
(?![^.]+$)   # negative lookahead to skip DOT that is just before file extension

PHP代码:

$text = preg_replace('/[^pLpN.]+|.(?![^.]+$)/u', '-', $text);

最新更新