假设输入字符串+123-321+123 345
,使用PHP的正则表达式函数,我想删除所有非数字([^\d]
)字符,但开头的+
字符除外。 +
可能存在也可能不存在,因此在字符串123-321+123 345
的情况下,结果应该相同(123321123345
)。
目前的解决方法是检查+
,然后运行preg_replace('/[^\d]+/', '', $string)
,但我确信必须有一个纯正则表达式来解决此问题。
谢谢!
答案 0 :(得分:5)
试试这个
/(?<!^)\D|^[^+\d]/
\D
与[^\d]
(?<!^)
是一个负面的后瞻,确保在不是数字之前没有字符串的开头。
此表达式将匹配不是字符串开头的所有非数字。
preg_replace('/(?<!^)\D|^[^+\d]/', '', $string)
答案 1 :(得分:0)
使用积极的外观。
preg_replace('/(?<=\d)[^\d]+/', '', $string)