我的preg_replace字符串几乎是完美的,但我有一个小麻烦

时间:2013-10-18 16:13:01

标签: php regex

尝试让我的preg_replace语句工作,除了一些变化之外,它在很大程度上都有效。

<?php
$string = "10vdc";
if (preg_match("/(^[0-9]+[0-9])+[v | a]/i",$string)) {
    echo "yes!";
    $string = preg_replace("/^[0-9]+[0-9]/","$0 ",$string);
}
if (preg_match("/[v | a][ac | dc]/i",$string)) {
    echo "<br>yes2!";
    $string = preg_replace("/([\d | \s][v | a])([ac|dc])/i","$1 $2",$string);
}
echo "<br>";
echo $string;
?>

如果我的字符串是10vdc,10 vdc,10vac或10 vac我的正则表达式工作(它应分别打印10 v dc或10 v ac)但如果我的字符串是10adc,10 adc,10aac或10 aac我的回声分别只返回10个adc或10个aac。我整个上午一直在研究教程,我开始掌握这个问题,但这让我很难受!

显然,如果您想尝试一下,只需更改$ string值。

感谢您的帮助!你是最好的。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。它与or(|)指示符之后的空格有关。

那是什么:
/([\d | \s][v | a])([ac|dc])/i

应为:
/([\d|\s][v|a])([ac|dc])/i