使用正则表达式验证掩码和货币的限制范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用正则表达式验证掩码和货币的限制范围相关的知识,希望对你有一定的参考价值。

我正在开发应用程序上的功能,现在有一个需要正则表达式的要求,以验证用户键入的掩码(可以)并限制键入的范围。例如,如果我键入:

100,00 - can pass
50,00 - can pass
100.000,00 - can pass
100.000,01 - more than 100k not pass

现在,我正在使用我的正则表达式来验证掩码,但我不能限制范围...

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

任何人都知道如何实现此限制?

答案

您需要分别验证100.000,00部分。另外,请记住.与一个点匹配,并且在您当前的正则表达式中,您可以无限次重复,因此100.000.000.000,00当前通过。

尝试一下:

^$?(?:100.000,00|(?:[1-9]d?.d{3}|[1-9]d{0,2}|0),d{1,2})$

测试live on regex101.com

说明:

^                   # Start of string
$?                 # Match optional dollar sign
(?:                 # Group: Match either
 100.000,00        # 100.000,00
|                   # or
 (?:                # Group: Match either
  [1-9]d?.d{3}   # a number between 1.000 and 99.999
 |                  # or
  [1-9]d{0,2}      # a number between 1 and 999  
 |                  # or
  0                 # 0
 )                  # End of inner group
 ,d{1,2}          # Match , and one or two digits
)                   # end of outer group
$

以上是关于使用正则表达式验证掩码和货币的限制范围的主要内容,如果未能解决你的问题,请参考以下文章

验证货币类型的正则表达式

只知道一个ip地址如何算出他的子网掩码和网络ID以及主机ID的范围呢?

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

js验证只能输入字母,数字或字母数字组合正则表达式

如何使用正则表达式验证范围 1-99?

Linux Shell脚本中对IP子网掩码和网关的有效性判断[转]