1

学习正则表达式,但这让我很头疼。我需要匹配一个浮点数(带有小数点.,小数点),它必须以以下字符结尾:€/g.

有效的匹配应该是例如:

  • 40€/g
  • 43.33€/g
  • 40,2€/g
  • 40.2€/g
  • 38.943€/g

感谢帮助..

4

3 回答 3

6

正则表达式将如下所示:

\d+(?:[.,]\d+)?€/g

在 Javascript 中,作为正则表达式对象(注意正斜杠需要转义):

/\d+(?:[.,]\d+)?€\/g/

以下是每个部分的功能的细分:

\d+  # one or more digits
(?:    # ... don't capture this group separately
 [.,] # decimal point
 \d+  # one or more digits
)?   # make the group optional
€/g  # fixed string to match

如果你想让 .123€/g 之类的东西也有效,你可以使用:

(?=[.,]|\d)(?:\d+)?(?:[.,]\d+)?€/g

也就是说,这两组数字都是可选的,但至少必须存在一个(这使用了前瞻,这有点棘手)。

请注意,这也将匹配诸如“word2€/g”之类的结构。如果要防止这种情况发生,请以(?<=^|\s)(如果前面有空格或字符串开头则匹配) 开始正则表达式并以(?=$|\s)(如果后面跟着空格或字符串结尾则匹配) 结束。

完整版:

(?<=^|\s)(?=[.,]|\d)(?:\d+)?(?:[.,]\d+)?€/g(?=$|\s)
于 2012-07-24T11:57:24.360 回答
2
\d+([.,]\d+)?€/g

应该工作,我猜。

于 2012-07-24T11:57:24.507 回答
0
于 2012-07-24T11:57:37.557 回答