如何删除字符串中紧跟在数字后的字符?PHP地址门牌号处理方法
解决方案
你可以直接调整正则匹配规则,一次性删除「连续数字+紧随其后无空格的所有字符」的整块门牌号内容,无需单独逐个删数字,修改后的代码如下:
<?php $string = '25a Test Lane'; $string = preg_replace("/\d+\S*\s?/", "", $string); // 输出结果为:Test Lane ?>
正则规则说明
\d+:匹配1个及以上的连续数字\S*:匹配紧随数字之后的0个及以上非空白字符(覆盖所有和数字紧邻无空格的字母、符号等内容)\s?:匹配门牌号后可选的1个空格,避免删除门牌号后字符串开头残留多余空白
验证效果
不同输入的处理结果参考:
- 输入
'123B Oak Street'→ 输出'Oak Street' - 输入
'45-c 幸福路'→ 输出'幸福路' - 输入
'无数字门牌号的地址'→ 输出'无数字门牌号的地址'(无匹配项时原内容不改动)
如果你的地址门牌号固定在字符串开头,想要避免误删地址中间的数字内容,可以把正则调整为/^\d+\S*\s?/,加^锚定只匹配字符串开头的门牌号块。
内容的提问来源于stack exchange,提问作者threeedv
相关产品推荐
相关产品推荐

