我正在使用此/[-\+,\.0-9]+/
来匹配+4400,00 %
或-3500,00 %
或0.00 %
等字符串中的数字。
我想要的匹配结果是+4400,00
,我正确地得到了它。
如果我想要像+4.400,00 %
这样的字符串(数千个点)的结果相同怎么办?
修改
如何修改我的RegEx以匹配<font color="red">+44.500 %</font>
等字符串中的数字?
答案 0 :(得分:2)
/[\-\+]?\s*[0-9]{1,3}(\.[0-9]{3})*,[0-9]+/
那应该涵盖
的字符串+
或-
开头,然后可能是一些空格关于您的其他问题(字符串中的匹配数字),您应该查看您正在使用的任何正则表达式API的手册。大多数API都有单独的search
和match
方法; match
希望整个字符串成为正则表达式语言的一部分,而search
也会匹配子字符串。
答案 1 :(得分:2)
[\+-]?
- 正负
\d{1,3}
- 一些数字
(\.\d{3})*
- 包含3位数字的小组
,\d{2}
逗号和另外2位数字
所以我们得到:
/[+-]?\d{1,3}(\.\d{3})*,\d{2}/
答案 2 :(得分:0)
你的正则表达式已经匹配“。”。但听起来你也想剥去“。”出来吗?如果是这种情况,则需要进行替换。在Perl中,
if ($input =~ /(-|\+)[0-9][,\.0-9]+/) {
$input =~ s/\.//;
} else {
die;
}
我也改变了正则表达式,所以它只匹配 - 和+一开始,所以它需要一个初始数字