假设输入字符串为+123-321+123 345
,使用PHP的正则表达式函数,我希望删除除开头的+
字符外的所有非数字([^'d]
)字符。+
可能存在也可能不存在,因此给定字符串123-321+123 345
,结果应该相同(123321123345
)。
目前的解决方法是检查+
,然后运行preg_replace('/[^'d]+/', '', $string)
,但我确信必须有一个纯regex解决方案来解决这个问题。
谢谢!
试试这个
/(?<!^)'D|^[^+'d]/
'D
与[^'d]
相同
(?<!^)
是一个负查找,它确保在非数字之前没有字符串的开头。
此表达式将匹配所有不是字符串开头的非数字。
preg_replace('/(?<!^)'D|^[^+'d]/', '', $string)
使用正向查找。
preg_replace('/(?<='d)[^'d]+/', '', $string)