我需要从删除货币的字符串中提取金额。 e.g。
我想要输出-5.95或6.85
The quick brown fox jumps over the lazy -$5.95 dog.
The quick brown fox jumps over the lazy $6.85 dog.
意味着应该接受正数或负数,但删除$符号。
我使用这种模式
([0-9]+[\.]*[0-9]*)
然而,它只获得正数。
- 5.95美元被提取为5.95。
有什么想法吗?
答案 0 :(得分:1)
您需要匹配减号。
-?\$[0-9]+[\.]*[0-9]*
开头?
之后的-
使减号符号可选。
\$
匹配一个美元符号,必须使用反向跟踪\
进行转义,因为正则表达式中的美元符号很重要。
您可以在与价格匹配后在美元符号上执行简单的字符串替换,而不是尝试使用正则表达式来提取值。
match(/-?\$[0-9]+[\.]*[0-9]*/).replace('$', '')
// -15.27
此外,您的十进制数表达式可以使用一些清理。
-?[0-9]+(\.[0-9]+)?
以上( )?
是一个可选组。
在其中,\.
表示需要一个小数。必须使用反斜杠.
对\
进行转义,因为.
通常会匹配任何字符。
接下来,必须匹配一个或多个数字。
此方法可防止匹配1.
之类的值,因为小数必须后跟至少一个数字。
答案 1 :(得分:0)
您的正则表达式只检查数字,句号和其他数字。你必须添加一个连字符的检查。
例如:
-?[0-9]+[\.]*[0-9]*
您可以在How do I include negative decimal numbers in this regular expression?
看到类似的问题