首先:我对正则表达式非常不满意,我已经在网上找到了正则表达式。
我想增加字符串中的第一个数字,例如$teststring = "abcd1234efgh56";
我已经找到了以下内容:
preg_replace( "|(\d+)|e", "$1+1", $teststring);
将导致abcd1235efgh57
preg_replace( "|(\d+)(?!.*\d)|e", "$1+1", $teststring);
将导致abcd1234efgh57
但是如何只增加第一个数字(示例中为1234),同时保留字符串的其余部分?
非常感谢您提前
答案 0 :(得分:3)
查看文档:{{3}}
使用第四个参数来限制替换次数
答案 1 :(得分:0)
尝试
preg_replace('/^([^0-9]+)?([0-9]+)([^0-9]+)?/', "$2+1", $teststring);
答案 2 :(得分:0)
您可以使用:
preg_replace('/([^0-9]*)(\d+)(.*)/e', '"$1" . ($2+2) . "$3"' , $str, 1);
这会将所有非数字字符(如果有)与第一个数字$1
匹配,第一个数字设为$2
,所有后续字符(如果有)匹配为$3
然后输出将2
添加到第一个数字的字符串(您可以将$2+2
更改为$2+NUMBER
)。
函数中的最后一个参数1
仅将重复限制为1次......
答案 3 :(得分:0)
preg_replace的可选第四个参数是limit:
preg_replace($ search,$ replace,$ subject,$ limit)
你可以为你的情况加1 ..
它会给你
$ teststring ='abcd1235efgh56'