我不愿意问,但我无法弄清楚 php preg_replace 并忽略了一些刺痛。
$string = '2012042410000102';
$string 需要看起来像 _0424_102
显示数字不断变化,2012 年每年都在变化
我试过的:
^\d{4}[^\d{4}]10000[^\d{3}]$
^\d{4}[^\d]{4}10000[^\d]{3}$
任何帮助,将不胜感激。我知道这是一个菜鸟问题,但对于任何有帮助的人来说都很容易。
谢谢
我不愿意问,但我无法弄清楚 php preg_replace 并忽略了一些刺痛。
$string = '2012042410000102';
$string 需要看起来像 _0424_102
显示数字不断变化,2012 年每年都在变化
我试过的:
^\d{4}[^\d{4}]10000[^\d{3}]$
^\d{4}[^\d]{4}10000[^\d]{3}$
任何帮助,将不胜感激。我知道这是一个菜鸟问题,但对于任何有帮助的人来说都很容易。
谢谢
您的第一个正则表达式正在寻找:
您的第二个正则表达式正在寻找:
您正在寻找的正则表达式是:
^\d{4}(\d{4})10000(\d{3})$
替换应该是:
_$1_$2
此正则表达式查找:
102
示例中的末尾)尝试以下操作:
^\d{4}|10000(?=\d{3}$)
这将匹配字符串中的前四位数字,或者如果在字符串结尾之前的“10000”之后有三位数字,则匹配字符串“10000”。
你会像这样使用它:
preg_replace('/^\d{4}|10000(?=\d{3}$)/', '_', $string);
只需使用简单的字符串函数:
$string = '2012042410000102';
$new = '_'.str_replace('10000', '_', substr($string, 4));
如果它们总是在相同的字符位置,那么正则表达式似乎是不必要的。您可以使用子字符串来获取您想要的部分,例如
sprintf('_%s_%s', substr($string,4,4), substr($string,13))
或者
'_' . substr($string,4,4) . '_' . substr($string,13)