欧洲数字正则表达式

European Numbers RegEx

本文关键字:正则表达式 数字      更新时间:2023-09-26

我使用这个/[-'+,'.0-9]+/来匹配字符串中的数字,如+4400,00 %-3500,00 %0.00 %

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

如果我想对+4.400,00 %(点表示千)这样的字符串得到相同的结果该怎么办?

编辑

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

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

应该包括

  • 可以以+-开头,然后可能是一些空白
  • 则有一到三个数字
  • 则有三个数字组,前缀为
  • ,逗号和逗号后面至少一个数字

关于您的附加问题(匹配字符串内的数字),您应该查看您正在使用的任何regex API的手册。大多数api都有单独的searchmatch方法;match希望整个字符串成为正则表达式语言的一部分,而search也将匹配子字符串。

['+-]? -正负

'd{1,3} -一些数字

('.'d{3})* -

前面有点的3位数组

,'d{2}逗号+ 2位数字

我们得到:

/[+-]?'d{1,3}('.'d{3})*,'d{2}/

你的正则表达式已经匹配"。"了。但听起来你还想把"。"去掉?如果是这样的话,你需要一个替换。在Perl中,

if ($input =~ /(-|'+)[0-9][,'.0-9]+/) {
  $input =~ s/'.//;
} else {
  die;
}

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