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