這是示例 PHP 代碼:
<?php
$str = '10,000.1 $100,000.1';
$pattern = '/(?!\$)\d (,\d{3})*\.?\d*/';
$replacement_str = 'Without$sign';
echo preg_replace($pattern, $replacement_str, $str);?>
目標是僅替換數字(即不應替換“ $100,000.1 ”)。但是上面的代碼同時替換了10,000.1和$100,000.1。如何實作排除?
uj5u.com熱心網友回復:
這個斷言總是正確的,(?!\$)\d 因為你匹配了一個不能是$
由于.模式末尾的和 數字是可選的,它也可以匹配以點結尾,例如0,000.
相反,您可以在左側斷言一個空白邊界,并可選擇匹配一個點后跟 1 個或多個數字:
(?<!\S)\d (?:,\d{3})*(?:\.\d )?\b
正則運算式演示
例子:
$str = '10,000.1 $100,000.1';
$pattern = '/(?<!\S)\d (?:,\d{3})*(?:\.\d )?\b/';
$replacement_str = 'Without$sign';
echo preg_replace($pattern, $replacement_str, $str);
輸出(如果洗掉數字,則文本“Without$sign”不正確)
Without$sign $100,000.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355947.html
