我想使用正则表达式删除字符串中的所有内容,除了字母和数字字符,我需要删除任何前导零。
以下有效,但不会删除前导零
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';
$pattern = '/([^\da-z]/i)';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
如何更改模式以删除前导零?
答案 0 :(得分:4)
这应该可以满足这两个要求:
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';
$pattern = '/^0+|[^\dA-Za-z]+/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
//=> 1234567890qwesssrtyuuioplkjhgfdsazxcvbnm
答案 1 :(得分:0)
试一试:
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]\';lkjhgfdsazxcvbnm,./';
$pattern = '/([\W])/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
如果你还想删除零模式:
$pattern = '/([\W0])/i';
答案 2 :(得分:0)
这个会起作用:
<?php
$string = '00000000A1234567890-=qwesss €#¢∞§¶¶•ªº– ≠≠rtyuuiop[]\';lkjhgfdsazxcvb00000nm,./';
$pattern = '#^(0*)|([^\da-z])#i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
修改强>
此模式也可简化为:
$pattern = '#^0+|\W#';