Word边界不适用于美元金额(正则表达式)

时间:2017-07-28 05:36:03

标签: javascript regex

我有一个与$。中的金额匹配的正则表达式。

 (\-?\$\-?[0-9]+\.?[0-9]*|usd\-?[0-9]+\.?[0-9]*|[0-9]+\.?[0-9]*\-?usd|[0-9]*\.?[0-9]*\$)

目前匹配 $ 250 USD250 等,它不应与 $ 250abchhh 中的 $ 250 相匹配。

所以,我尝试过单词边界,但它也没有解决这个问题,我该如何解决这个问题呢?

匹配案例

 $456 
 $45.6
 $.5
 $-45
 -$45
 usd-456
 usd46
 usd4.6
 usd.46
 1$
 1.5$
 .5$
 -.5$
 5usd
 456usd

它不应该匹配

  455$abc
  abc$123
  abcuds1
  jhb$5665usdjnjnb
  $usd1555
  usd$768
  $566usd
  $5788usdbjhj  

1 个答案:

答案 0 :(得分:0)

您还应该为小数写一个正确的正则表达式。并使用^ $作为行的开头和结尾。

^\s*(?:(?:(?:-?(?:usd|\$)|(?:usd|\$)-)(?:(?:0|[1-9]\d*)?(?:\.\d+)?(?<=\d)))|(?:-?(?:(?:0|[1-9]\d*)?(?:\.\d+)?(?<=\d))(?:usd|\$)))\s*$

在测试结果中查看here