【问题标题】:How to match numbers ranging from 1 to n with regex?如何使用正则表达式匹配从 1 到 n 的数字?
【发布时间】:2017-11-28 06:16:05
【问题描述】:

我想验证,使用 HTML 模式属性(所以我可以得到通知),一个数字字符串,必须只包含范围从 1 到 400 的数字(我可以允许001)。

我尝试了以下模式,但我错过了一些许多

^([1-3][0-9]{0,2}|400)$

【问题讨论】:

    标签: html regex validation input


    【解决方案1】:
    ^(0?0?[1-9]|0?[1-9][0-9]|[1-3][0-9][0-9]|400)$
    

    这将匹配 1-400 和可选的前导零。

    【讨论】:

    • 该 |运算符的作用类似于 OR。它不会修改它前面的另一个表达式(它不会将其限制为 400)。 0?0?[1-9] 匹配 1 或 01 或 001; 0?[1-9][0-9] 匹配 10 或 010; [1-3][0-9][0-9] 匹配 100 或 399; 400 匹配 400,仅此而已。 |运算符告诉它匹配第一个或第二个或第三个或第四个。
    【解决方案2】:

    您可以使用以下正则表达式

    let re = /^([1-3]?[0-9]?[0-9]|400)$/;
    re.test(input);
    
    ### verification
    let regex = /^([1-3]?[0-9]?[0-9]|400)$/;
    
    let i = 1;
    while(regex.test(i)){
      i += 1;
    }
    console.log(i); // outputs 401
    

    【讨论】:

      【解决方案3】:

      试试这个([1-9][0-9]{0,2}|400)$

      [1-9][0-9]{0,2} matches any number between 1–999
      |400 limit upto 400
      

      【讨论】:

      • 感谢您的解释!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多