1

试图让我的 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 值。

谢谢你的帮助!你是最棒的。

4

1 回答 1

0

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

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

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

于 2013-10-18T16:53:44.170 回答