Php preg_替换字母字符中的条形破折号(保留在数字之间)

Php preg_替换字母字符中的条形破折号(保留在数字之间),php,regex,preg-replace,Php,Regex,Preg Replace,如何删除字母之间的所有破折号,但保留数字之间的任何破折号?很抱歉,我之前没有任何显示的尝试,因为在谷歌搜索了一个小时后,我还没有找到任何相关内容。目前我正在使用一个简单的str_替换来删除不需要的字符 您可以使用lookheads: $str = preg_replace('/(?<=\D)-(?=\D)/', '', 'abc-xyz-12-45-89'); //=> abcxyz-12-45-89 $str=preg_replace('/(?如果你只是对字母感兴趣,这可能有用

如何删除字母之间的所有破折号,但保留数字之间的任何破折号?很抱歉,我之前没有任何显示的尝试,因为在谷歌搜索了一个小时后,我还没有找到任何相关内容。目前我正在使用一个简单的str_替换来删除不需要的字符

您可以使用lookheads:

$str = preg_replace('/(?<=\D)-(?=\D)/', '', 'abc-xyz-12-45-89');
//=> abcxyz-12-45-89

$str=preg_replace('/(?如果你只是对字母感兴趣,这可能有用
如果您使用的不是
[a-zA-z]
\pL
,您将删除
字母之间的破折号、标点、空格、控制字符或任何组合等


查找:
(?i)(?这似乎与我想要的正好相反,但这是一个很好的开始。我会将\d改为Alpha,对吗?我想保留数字之间的破折号,字母之间的条纹。太棒了。现在就试试。谢谢!效果很好。再次感谢!对于lookarounds的非常好的参考:www.regular-expressions.info/lookaround.htmlGreat。谢谢s、 好的。非常感谢。谢谢,这很好。是的,我确实想删除破折号,除了数字之间的破折号,但这也很有帮助。我会回来参考它。非常感谢。好的,我希望人们能说明这个非常重要的细节。嗯,我一想到就这么做了。谢谢。