如何使用 preg_replace 删除最后 2 个字符?
How to remove 2 last characters with preg_replace?
我有这样的代码:784XX。 XX 可以是一个字符或数字,我需要一个表达式来删除最后 2 个字符 (XX) 使用(且仅)preg_replace
.
我该怎么做?
例如:
的输出
782A3 is 782,
0012122 is 00121,
76542A is 7654,
333333CD is 333333,
您可以使用substr
函数。
但是如果您要使用 preg_replace,您可以这样做:
$val = preg_replace('/[\w\d]{2}$/', '', $val);
我很确定有更简单的方法来完成这项任务,但如果我们想使用正则表达式,我们将从一个简单的表达式开始,例如:
(.+)?(..)
如果我理解正确,并且我们想要的输出在这个捕获组中:
(.+)
Demo
$re = '/(.+)?(..)/m';
$str = '782A3
0012122
76542A
333333CD';
$subst = '';
$result = preg_replace($re, $subst, $str);
echo $result;
正则表达式电路
jex.im 可视化正则表达式:
建议
AbraCadaver在评论中的建议是更好的方法:
substr('784XX', 0, -2);
我有这样的代码:784XX。 XX 可以是一个字符或数字,我需要一个表达式来删除最后 2 个字符 (XX) 使用(且仅)preg_replace
.
我该怎么做?
例如:
的输出782A3 is 782,
0012122 is 00121,
76542A is 7654,
333333CD is 333333,
您可以使用substr
函数。
但是如果您要使用 preg_replace,您可以这样做:
$val = preg_replace('/[\w\d]{2}$/', '', $val);
我很确定有更简单的方法来完成这项任务,但如果我们想使用正则表达式,我们将从一个简单的表达式开始,例如:
(.+)?(..)
如果我理解正确,并且我们想要的输出在这个捕获组中:
(.+)
Demo
$re = '/(.+)?(..)/m';
$str = '782A3
0012122
76542A
333333CD';
$subst = '';
$result = preg_replace($re, $subst, $str);
echo $result;
正则表达式电路
jex.im 可视化正则表达式:
建议
AbraCadaver在评论中的建议是更好的方法:
substr('784XX', 0, -2);