我第一次忙于使用 PHP 的 Regex。
我想做一個車牌檢查器,并在字母和數字之間加上“-”。現在一切正常,但唯一的一個問題是,對于每個字串,我都會得到另一個變數。
比如:對于 999TB2,我得到 1 美元 2 美元 3 美元,但第二個字串 9999XX 將是 4 美元 5 美元 6 美元。是否有可能獲得第二個字串也 $1 $2 $3?
<?php
$re = '/^(\d{3})([A-Z]{2})(\d{1})|(\d{2})(\d{2})([A-Z]{2})$/';
$str = '9999XX'; //(Will be later connected to database)
$subst = '$1-$2-$3 $4-$5-$6';
$result = preg_replace($re, $subst, $str, 1);
echo "The result of the substitution is ".$result;
?>
親切的問候
uj5u.com熱心網友回復:
您可以使用分支重置組(?|,并且可以{1}從模式中省略。
^(?|(\d{3})([A-Z]{2})(\d)|(\d{2})(\d{2})([A-Z]{2}))$
請參閱正則運算式演示和PHP 演示。
示例代碼
$strings = [
"999TB2",
"9999XX"
];
$re = '/^(?|(\d{3})([A-Z]{2})(\d)|(\d{2})(\d{2})([A-Z]{2}))$/';
foreach ($strings as $str) {
echo preg_replace($re, '$1-$2-$3', $str) . PHP_EOL;
}
輸出
999-TB-2
99-99-XX
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483122.html
