crazyly 的个人博客 / 0 / 4 / 创建于 6年前
请使用正则表达式,能够把以下符合美元价格格式的字符串匹配并可从一段字符串中提取出来:"200.49"、"1,999.00"、"$1,998.00"、"$99"、"50.00美元"、"$50.00"、"199美元"。
需要用正则将 $1,998.00 ,$99、50.00美元、$50.00 、199美元,提取出来 希望好心大牛们可以帮忙解惑
本作品采用《CC 协议》,转载必须注明作者和本文链接
有思路的小伙伴们帮忙附言
\$?\d{1,3}(?:,\d{3})*(?:\.\d{0,2})?(?:\s*美元)?
站点:https://regex101.com/
@Wi1dcard
$str = '"200.49"、"1,999.00"、"$1,998.00"、"$99"、"50.00美元"、"$50.00","199 美元"'; $patten = '/\$?\d{1,3}(?:,\d{3})*(?:\.\d{0,2})?(?:\s*美元)?/'; preg_match_all($patten, $str, $sd); var_dump($sd); exit; 输出结果(200.49与1,999.00,不是美元也输出了) array(1) { [0]=> array(7) { [0]=> string(6) "200.49" [1]=> string(8) "1,999.00" [2]=> string(9) "$1,998.00" [3]=> string(3) "$99" [4]=> string(11) "50.00美元" [5]=> string(6) "$50.00" [6]=> string(10) "199 美元" } }
哦,如果不带美元关键字就不匹配的话,那稍微修改即可:
\$\d{1,3}(?:,\d{3})*(?:\.\d{0,2})?(?:\s*美元)
(?:\$\d{1,3}(?:,\d{3})*(?:\.\d{0,2})?)|(?:\d{1,3}(?:,\d{3})*(?:\.\d{0,2})? 美元)
我要举报该,理由是:
站点:https://regex101.com/
@Wi1dcard
哦,如果不带美元关键字就不匹配的话,那稍微修改即可: