我有这样的字符串(一些例子):
F7998FM3213/02F
J442554NM/05
K439459845/34D
我需要使用带有
preg_replace
和正则表达式的 PHP 来删除任何字符串中正斜杠“/”之后的所有非数字字符。
例如上面的代码之后看起来像这样:
F7998FM3213/02
J442554NM/05
K439459845/34
如果您追求可读性,这样的东西将是完美的:
$parts = explode("/",$line,2);
$parts[1] = preg_replace("/\D/","",$parts[1]);
$output = implode("/",$parts);
但是,为了简洁起见并完全基于您给出的示例,请尝试以下操作:
$output = preg_replace("/\D+$/","",$input);
这将从字符串末尾删除所有非数字字符,根据您的示例,这似乎就是您所追求的。
你可以使用这个:
$subject = <<<LOD
F7998FM3213/02F
J442554NM/05
K439459845/34D
K439459845/34D34
LOD;
echo preg_replace('~^[^/]*+/\K|[^\d\n]++~m', '', $subject);
说明:
正则表达式是两件事之间的交替:
/
包括/
之后的部分即不是数字或换行一次或多次由于首先检查字符串的开头,因此所有非数字字符都将在/
之后被删除
\D
之后任意位置的所有
/
,您可以替换:(?:/\K|\G(?!^))(\d*)\D+
与
$1
。喜欢:
preg_replace(',(?:/\K|\G(?!^))(\d*)\D+,', '$1', $str);