我有这样的字符串(一些例子):
F7998FM3213/02F
J442554NM/05
K439459845/34D
我需要使用带有preg_replace
的PHP和正则表达式来删除任何字符串中的所有非数字字符,在正斜杠后面,'/'。
例如,上面的代码后面会是这样的:
F7998FM3213/02
J442554NM/05
K439459845/34
答案 0 :(得分:1)
你可以用这个:
$subject = <<<LOD
F7998FM3213/02F
J442554NM/05
K439459845/34D
K439459845/34D34
LOD;
echo preg_replace('~^[^/]*+/\K|[^\d\n]++~m', '', $subject);
说明:
正则表达式是两件事之间的交替:
/
/
之后的所有不是数字或新行的部分一次或多次由于首先检查字符串的开头,所以在<{strong> /
答案 1 :(得分:1)
如果你想要阅读,那么这样的话会很完美:
$parts = explode("/",$line,2);
$parts[1] = preg_replace("/\D/","",$parts[1]);
$output = implode("/",$parts);
但是,为了简明扼要并完全基于您给出的示例,请尝试以下方法:
$output = preg_replace("/\D+$/","",$input);
这将从字符串的末尾删除任何非数字字符,这似乎是您根据示例所做的事情。
答案 2 :(得分:0)
要在\D
替换之后的任何地方删除所有/
:
(?:/\K|\G(?!^))(\d*)\D+
$1
。像:
preg_replace(',(?:/\K|\G(?!^))(\d*)\D+,', '$1', $str);