欧洲数字RegEx

时间:2011-09-15 14:38:47

标签: javascript regex

我正在使用此/[-\+,\.0-9]+/来匹配+4400,00 %-3500,00 %0.00 %等字符串中的数字。

我想要的匹配结果是+4400,00,我正确地得到了它。

如果我想要像+4.400,00 %这样的字符串(数千个点)的结果相同怎么办?

修改

如何修改我的RegEx以匹配<font color="red">+44.500 %</font>等字符串中的数字?

3 个答案:

答案 0 :(得分:2)

/[\-\+]?\s*[0-9]{1,3}(\.[0-9]{3})*,[0-9]+/

那应该涵盖

的字符串
  • 可以以+-开头,然后可能是一些空格
  • 然后有一到三个数字
  • 然后有三个数字的组,前缀为句号
  • 然后在逗号
  • 后面有一个逗号和至少一个数字

关于您的其他问题(字符串中的匹配数字),您应该查看您正在使用的任何正则表达式API的手册。大多数API都有单独的searchmatch方法; 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;
}

我也改变了正则表达式,所以它只匹配 - 和+一开始,所以它需要一个初始数字