2

我有这样的字符串(一些例子):

 F7998FM3213/02F
 J442554NM/05
 K439459845/34D

我需要使用 PHPpreg_replace和正则表达式来删除任何字符串中的所有非数字字符,在正斜杠“/”之后。

例如,上面的代码之后看起来像这样:

F7998FM3213/02
J442554NM/05
K439459845/34
4

3 回答 3

1

你可以使用这个:

$subject = <<<LOD
F7998FM3213/02F
J442554NM/05
K439459845/34D
K439459845/34D34
LOD;

echo preg_replace('~^[^/]*+/\K|[^\d\n]++~m', '', $subject);

解释:

正则表达式是两件事之间的交替:

  1. 你匹配开始直到你遇到/包含
  2. 后面的部分/是所有不是数字或新行的部分,一次或多次

由于首先检查字符串的开头,因此所有非数字字符都/

于 2013-06-10T21:36:40.883 回答
1

如果您要提高可读性,那么这样的事情将是完美的:

$parts = explode("/",$line,2);
$parts[1] = preg_replace("/\D/","",$parts[1]);
$output = implode("/",$parts);

但是,为了简洁起见并完全基于您给出的示例,请尝试以下操作:

$output = preg_replace("/\D+$/","",$input);

这将从字符串末尾删除任何非数字字符,根据您的示例,这似乎是您所追求的。

于 2013-06-10T21:43:02.457 回答
0

\D要在 a 之后删除所有位置,/您可以替换:

(?:/\K|\G(?!^))(\d*)\D+

$1. 喜欢:

preg_replace(',(?:/\K|\G(?!^))(\d*)\D+,', '$1', $str);
于 2013-06-10T22:18:28.863 回答