2011-10-07 77 views
4

如果在提供的字符串中没有字母,我发现这个正则表达式工作正常。正则表达式在字符串的特定位置添加连字符

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

我的输入字符串有时会混合使用字母和数字。在这两种情况下,我必须做些什么才能使其发挥作用。我有其他的选择来迭代一个字符串,并使用PHP的字符串函数添加破折号,但我想了解我们如何使用正则表达式来实现它。

回答

3

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

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

,包括在正则表达式的结尾i标志(后最终/)使其不区分大小写。

+0

+1并感谢不区分大小写的部分。完全错过了! –

相关问题