我想在<input>上设置一些验证,以防止用户输入错误的字符。为此,我正在使用ng-pattern。当前,它禁止用户输入错误的字符,但是我也注意到这不是预期的行为,因此我也计划创建一个指令。

我正在使用

AngularJS:1.6.1

正则表达式应与相匹配

以下是正则表达式字符串的要求:

  • 数字0x到xx(示例01到93)
  • 数字x到xx(示例9到60)
  • 不允许使用字符
  • 不允许使用特殊字符

  • 注意:
    “x”是变量,可以是0到100之间的任何数字。

    “x”位置的数字是可变的,因此,如果有可能创建一个易于更改的字符串,将不胜感激!

    我尝试了什么

    我在以下地方尝试过一些正则表达式字符串:

    1)^0*([0-9]\d{1,2})$
    --> Does match 01 but not 1
    --> Does match 32 where it shouldn't
    

    2)^[1-9][0-9]?$|^31$
    --> Does match 1 but not 01
    --> Does match 32 where it shouldn't
    

    为了测试,我使用https://regex101.com/tests

    我的尝试中缺少什么?

    最佳答案

    如果您的目标是将0匹配到100,则这是基于先前解决方案的一种方法。

    \b(0?[1-9]|[1-9][0-9]|100)\b
    

    基本上,有3个要匹配的部分...
    0?[1-9]提及数字1到9,并提到存在0可能
    [1-9][0-9]覆盖数字10到99,[1-9]代表十
    100涵盖100个

    Here's an example of it

    您需要将较高的边界设置为42时,表达式的中间部分将变为[1-3][0-9](覆盖10到39),最后一部分将变为4[0-2](覆盖40到42),如下所示:
    \b(0?[1-9]|[1-3][0-9]|4[0-2])\b
    

    关于javascript - 正则表达式匹配数在1到31之间,带或不带前导0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41635612/

    10-12 00:22
    查看更多