我想捕捉$-(或£-)价格〉= 20,没有美分(便士),其中$(£)可以在价值之前或之后,货币符号可以与价值分开空格或不分开,例如:
$20
$3000
£ 60.67 (but only the '60'-part)
33$
500.99$ (but only the '500'-part)
90 £
比如:
(?:[^\d][$£] ?)([\d]{3,}|[2-9][\d]{1})|([\d]{3,}|[2-9][\d]{1})(?: *.?[0-9]* ?[$£])
...这工作,但更简单(或至少没有非捕获(?: )
-语法,因为它不与我的正则表达式浏览器突出显示扩展.
我想用这个来突出显示价格,例如在亚马逊上通过一个regex浏览器扩展。如果你碰巧知道一个好的(甚至可能支持(?: )
-语法),我很乐意听到你的建议,太:-)
先谢谢你了
1条答案
按热度按时间nlejzf6q1#
您可以使用以下正则表达式:
其将匹配分成两种情况:
"案例1":
(?<=[$£])\s*([2-9]\d|\d{3,})(?=[\.\s])
(?<=[$£])
:货币符号后面跟...\s*
:空格([2-9]\d|\d{3,})
:20或更大的数值(?=[\.\s])
:后跟点(如果是十进制)或空格"案例2":
(?<!\.)([2-9]\d|\d{3,})(?=(?:\.\d+)?\s*[$£])
(?<!\.)
:匹配项前面没有点([2-9]\d|\d{3,})
:20或更大的数值(?=(?:\.\d+)?\s*[$£])
:后跟可选的点和数字(用于十进制)、强制空格和货币符号检查here演示。