繁体   English   中英

Angular 中的货币正则表达式

[英]Currency regex in Angular

我需要 Angular 中货币正则表达式的帮助。 我不太擅长正则表达式。

我想要的是一个正则表达式:

  1. 允许逗号作为数字组分隔符,但不能在开头或结尾。
  2. 只允许小数点后四舍五入的 2 位数字。
  3. 只允许一个小数点,而不是开头或结尾。
  4. 不允许 0.00 或 0。

这是我的正则表达式:

(?=.*?\d)^\$?(([1-9]\d{0,2}(,\d{3})*)|\d+)?(\.\d{1,2})?$

但是这个正则表达式允许 0.00

任何人在这里请帮助谢谢

期望的输出

有效的:

1,000.00

1000

0.01

24

1,234,000

11,222,245.22

无效:

,000.00

,,,,,9

0

0.00

1,22,2,

1,000。

123,123,22

000,300.00

000300.00

000,123

000,000

00,000

0,000

您可以使用

/^(?![0,.]+$)(?:0|[1-9]\d{0,2}(?:,\d{3})*|[1-9]\d*)(?:\.\d{1,2})?$/

查看正则表达式演示

细节

  • ^ - 字符串的开头
  • (?.[0,,]+$) - 如果存在一个或多个0 ,或 ,则匹配失败的负前瞻. 字符直到字符串结尾
  • (?:0|[1-9]\d{0,2}(?:,\d{3})*|[1-9]\d* - 三种选择之一:
    • 0 - 零
    • | 或者
    • [1-9]\d{0,2}(?:,\d{3})* - 1 到 3 位数字,第一个非零,然后是 0 次或多次逗号重复,然后是 3 位数字
    • | - 或者
    • [1-9]\d* - 1+ 个数字,第一个非零,
  • (?:\.\d{1,2})? - 的可选序列. 然后是 1 或 2 位数字
  • $ - 字符串结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM