我找到了这个正则表达式,如果在提供的字符串中没有字母,它就可以正常工作。

$string = "12522191813381147500333332228323";
echo $formattedString = preg_replace("/^(\d{8})(\d{4})(\d{4})(\d{4})(\d{12})$/", "$1-$2-$3-$4-$5", $string);

我的输入字符串有时是字母和数字的混合。在这两种情况下,我都要做些什么才能使它起作用。我还有其他方法可以迭代字符串并使用php的字符串函数添加破折号,但我想学习如何使用正则表达式实现它。

最佳答案

\w还允许下划线,如果您真的只想允许字母数字字符,则必须执行以下操作:

([a-z0-9]{8})([a-z0-9]{4})

并在regex的末尾(在finali之后)包含一个/标志,使其不区分大小写。

10-04 12:21
查看更多