正则表达式在字符串的特定位置添加连字符

时间:2011-10-07 08:45:09

标签: php regex

如果提供的字符串中没有字母,我发现这个正则表达式可以正常工作。

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

我的输入字符串有时会混合使用字母和数字。我必须做些什么改变才能使它在两种情况下都有效。我有其他替代迭代字符串并使用PHP的字符串函数添加破折号但我想学习如何使用正则表达式实现它。

1 个答案:

答案 0 :(得分:3)

\w也允许下划线,如果你真的只想允许字母数字字符,你必须做这样的事情:

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

在正则表达式的末尾(在最终i之后)包含一个/标志,以使其不区分大小写。