【问题标题】:PHP Regular Expression ExclusionPHP 正则表达式排除
【发布时间】:2021-11-10 18:09:06
【问题描述】:

这里是示例 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。如何实现排除?

【问题讨论】:

    标签: php regex


    【解决方案1】:

    当你匹配一个不能是$的数字时,这个断言总是正确的(?!\$)\d+

    由于. 和模式末尾的数字是可选的,它也可以匹配以点结尾的,例如0,000.

    相反,您可以在左侧声明一个空白边界,并可选择匹配一个点,后跟一个或多个数字:

    (?<!\S)\d+(?:,\d{3})*(?:\.\d+)?\b
    

    Regex demo

    例子:

    $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
    

    【讨论】:

    • 非常感谢!!!
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2016-11-27
    • 2021-09-16
    • 2014-04-11
    相关资源
    最近更新 更多