我有以下代码来删除所有非数字字符:
$num = preg_replace('/\D/', '', $num);
我想让它删除除任何尾随 X 之外的所有数字字符(不区分大小写)。
前任:
s34kr = 34
xX4rx = 4x
rs5t928X = 5928X
我有以下代码来删除所有非数字字符:
$num = preg_replace('/\D/', '', $num);
我想让它删除除任何尾随 X 之外的所有数字字符(不区分大小写)。
前任:
s34kr = 34
xX4rx = 4x
rs5t928X = 5928X
您可以使用前瞻断言,再加上这样的交替:
preg_replace('/\D(?=.)|[^xX]$/', '', $num);
仅当后跟另一个字符或不是“x”的尾随字符时,它才匹配非数字。
选择
您可以考虑匹配:
if (preg_match_all('/\d+|[xX]$/', $num, $matches)) {
$num = join('', $matches[0]);
} else {
$num = '';
}
这匹配任意数量的数字或尾随的“x”,然后将捕获的匹配项连接在一起。
尝试:
$num = preg_replace('/(?:(?!\b\d+[xX]?\b).)*(\b\d+[xX]?\b)?/', '$1', $num);