javascript正则表达式浮点数,以字符串结尾

jpa*_*paw 1 javascript regex floating-point

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

有效匹配应为例如:

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

感谢帮助..

por*_*ges 6

正则表达式看起来像:

\d+(?:[.,]\d+)?€/g
Run Code Online (Sandbox Code Playgroud)

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

/\d+(?:[.,]\d+)?€\/g/
Run Code Online (Sandbox Code Playgroud)

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

\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
Run Code Online (Sandbox Code Playgroud)

如果你想允许.123€/ g这样的东西也有效,你可以使用:

(?=[.,]|\d)(?:\d+)?(?:[.,]\d+)?€/g
Run Code Online (Sandbox Code Playgroud)

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

请注意,这也将匹配'word2€/ g'等结构.如果要防止这种情况,请启动正则表达式(?<=^|\s)(匹配,如果前面有空格或字符串的开头)并以(?=$|\s)(以匹配后跟空格或字符串结尾)匹配.

完整版:

(?<=^|\s)(?=[.,]|\d)(?:\d+)?(?:[.,]\d+)?€/g(?=$|\s)
Run Code Online (Sandbox Code Playgroud)