Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式在字符串的特定位置添加连字符_Php_Regex - Fatal编程技术网

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

Php 正则表达式在字符串的特定位置添加连字符,php,regex,Php,Regex,我找到了这个正则表达式,如果提供的字符串中没有字母,它就可以正常工作 $string = "12522191813381147500333332228323"; echo $formattedString = preg_replace("/^(\d{8})(\d{4})(\d{4})(\d{4})(\d{12})$/", "$1-$2-$3-$4-$5", $string); 我的输入字符串有时是字母和数字的混合体。我必须做些什么改变才能使它在这两种情况下都起作用。我还有其他选择,可以使用PH

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

$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})

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

+1感谢您提供了不区分大小写的部分。完全错过了!