PHP中preg_replace的正则表达式

时间:2013-06-10 21:25:08

标签: php regex preg-replace expression

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

 F7998FM3213/02F
 J442554NM/05
 K439459845/34D

我需要使用带有preg_replace的PHP和正则表达式来删除任何字符串中的所有非数字字符,在正斜杠后面,'/'。

例如,上面的代码后面会是这样的:

F7998FM3213/02
J442554NM/05
K439459845/34

3 个答案:

答案 0 :(得分:1)

你可以用这个:

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

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

说明:

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

  1. 您在开始时遇到/
  2. /之后的所有不是数字或新行的部分一次或多次
  3. 由于首先检查字符串的开头,所以在<{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);