RegEx价格?

Kov*_*ovu 9 regex

我正在寻找价格的RegEx.因此它应该是前面的X数字,而不是",",最后是2个数字.

有人可以支持我并发布吗?

And*_*mbu 20

你打算用什么语言?

它应该是这样的:

^\d+(,\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)

阐释:

前面的X数字是:^\d+where ^表示字符串的开头,\d表示数字,+表示一个或多个

我们使用()带有问号的组,?意思是:匹配组内的一个或没有时间.

组内还有,\d{1,2},该,是你写的逗号,\d仍是一个数字{1,2}是指一个或两个次匹配前面的数字.

最后一个$匹配字符串的结尾.


elg*_*lge 15

我对以前的答案不满意.这是我的看法:

\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})

|^^^^^^|^^^^^^^^^^^^^|^^^^^^^^^^^|
| 1-3  | 3 digits    | 2 digits  |
|digits| repeat any  |           |
|      | no. of      |           |
|      | times       |           |
Run Code Online (Sandbox Code Playgroud)

(详情请见:https://regex101.com/r/cG6iO8/1)

涵盖以下所有案例

  • 5.00
  • 1000
  • 1,000,000.99
  • 5,99(欧洲价格)
  • 5.999,99(欧洲价格)
  • 0.11
  • 0.00

但也有奇怪的东西

  • 5.000,000.00

如果你想要包括5和1000(我个人伤害不喜欢匹配所有数字),那么只需添加一个"?" 像这样:

\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?
Run Code Online (Sandbox Code Playgroud)


r-h*_*old 7

我正在研究类似的问题.但是,我想只匹配货币符号或字符串也包括在字符串中,如欧元,欧元,美元或美元.符号可能是尾随或前导.我不在乎Number和Currency子字符串之间是否有空格.我在前面的讨论中使用数字匹配并使用了价格编号:\ d {1,3}(?:[.,]\d {3})*(?:[.,]\d {2})?

这是最终结果:

(USD|EUR|€|\$)\s?(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2}))|(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?)\s?(USD|EUR|€|\$)
Run Code Online (Sandbox Code Playgroud)

我使用(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?)\s?(USD|EUR|€|\$)模式来匹配货币符号(此处具有前导空格的容差).我认为您可以轻松地调整任何其他货币

有关最新版本的要点可以在https://gist.github.com/wischweh/b6c0ac878913cca8b1ba找到

  • 几乎完美。正如上面的评论所强调的,这要求任何大于 3 位的数字都带有逗号来表示千位。因此,值“$9999.00”将不匹配,但“$9,999.00”将匹配。我能够通过更改该限制 (USD|EUR|€|\$|£)\s?(\d{1,}(?:[.,]\d{3})*(?: [.,]\d{2}))|(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?)\ s?(美元|欧元) (2认同)