如果提供的字符串中没有字母,我发现这个正则表达式可以正常工作。
$string = "12522191813381147500333332228323";
echo $formattedString = preg_replace("/^(\d{8})(\d{4})(\d{4})(\d{4})(\d{12})$/", "$1-$2-$3-$4-$5", $string);
我的输入字符串有时会混合使用字母和数字。我必须做些什么改变才能使它在两种情况下都有效。我有其他替代迭代字符串并使用PHP的字符串函数添加破折号但我想学习如何使用正则表达式实现它。
答案 0 :(得分:3)
\w
也允许下划线,如果你真的只想允许字母数字字符,你必须做这样的事情:
([a-z0-9]{8})([a-z0-9]{4})
在正则表达式的末尾(在最终i
之后)包含一个/
标志,以使其不区分大小写。