学习正则表达式,但这让我很头疼。我需要匹配一个浮点数(带有小数点.
或,
小数点),它必须以以下字符结尾:€/g
.
有效的匹配应该是例如:
40€/g
43.33€/g
40,2€/g
40.2€/g
38.943€/g
感谢帮助..
学习正则表达式,但这让我很头疼。我需要匹配一个浮点数(带有小数点.
或,
小数点),它必须以以下字符结尾:€/g
.
有效的匹配应该是例如:
40€/g
43.33€/g
40,2€/g
40.2€/g
38.943€/g
感谢帮助..
正则表达式将如下所示:
\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)
\d+([.,]\d+)?€/g
应该工作,我猜。