【问题标题】:Regex number between 1 and 1001 到 100 之间的正则表达式数
【发布时间】:2016-02-27 19:26:51
【问题描述】:

我搜索了很多,但找不到这个 RegExp 的解决方案(我不得不说我在 Reg. Expressions 方面不是很有经验)。

Regex = ^[1-9]?[0-9]{1}$|^100$

我想测试一个介于 1 到 100 之间的数字,不包括 0

【问题讨论】:

  • 为什么不解析为数字,并测试(x >= 1) AND (x <= 100)
  • 你可以使用简单的 if 条件。
  • 不要使用正则表达式解决这个问题...
  • @Martijn:原因之一是 ASP.NET webforms 验证控件使用提供基于 RegEx 的验证。这不仅可以确保数字输入,而且可以通过单个验证控件确保百分比的输入范围。

标签: regex string


【解决方案1】:

试试:

^[1-9][0-9]?$|^100$

Working fiddle

编辑:如果你想匹配 00001, 00000099 试试

^0*(?:[1-9][0-9]?|100)$

FIDDLE

【讨论】:

  • 有趣的网站 Ankur,但我很想找到一个列表来选择正则表达式引擎。
  • @sputnick 我不知道其他引擎,但 regexpal.com 测试 javascript 正则表达式
  • @GillesQuenot 您可以从左侧栏中选择正则表达式风格
  • 这对我有用,因此赞成 Ankur。谢谢。
【解决方案2】:

对于从 1 到 100 且前面没有 0 的整数,请尝试:

^[1-9]$|^[1-9][0-9]$|^(100)$

对于从 0 到 100 且前面没有 0 的整数,请尝试:

^[0-9]$|^[1-9][0-9]$|^(100)$

问候

【讨论】:

    【解决方案3】:

    试试看, 这将更有效地工作.. 1. 00 - 99.99(含小数)的数字

    ^([0-9]{1,2}){1}(\.[0-9]{1,2})?$ 
    

    工作小提琴链接

    https://regex101.com/r/d1Kdw5/1/

    2.对于1-100(含)范围内不带0的数字。

    (?:\b|-)([1-9]{1,2}[0]?|100)\b
    

    工作小提琴链接

    http://regex101.com/r/mN1iT5/6

    【讨论】:

    • 在小提琴上检查一下。链接在那里。
    • 我已经编辑了表达式。有一点小错误。立即检查。
    • 我认为,当您为您的意图添加一些解释时,这对 OP 和进一步的访问者会更有帮助。
    • 嗯。仍然不是 - 它不会匹配 100 并且会匹配(例如)11.33
    • ...还有一些!正确的广告;得到我的支持。
    【解决方案4】:

    如果有人假设他真的需要正则表达式——这在许多情况下是完全合理的——问题是需要指定特定的正则表达式种类。例如:

    egrep '^(100|[1-9]|[1-9][0-9])$'
    grep -E '^(100|[1-9]|[1-9][0-9])$'
    

    如果 (...|...) 替代语法可用,则工作正常。在其他情况下,它们会像 \(...\|...\)

    一样被反斜杠

    【讨论】:

      【解决方案5】:

      有很多选项可以为此编写正则表达式模式

      • ^(?:(?!0)\d{1,2}|100)$
      • ^(?:[1-9]\d?|100)$
      • ^(?!0)(?=100$|..$|.$)\d+$

      【讨论】:

        【解决方案6】:

        这里是 简单 正则表达式的理解(已验证,前面没有 0)

        介于 0 到 100 (Try it here) 之间:

        ^(0|[1-9][0-9]?|100)$
        

        1 到 100 之间 (Try it here):

        ^([1-9][0-9]?|100)$
        

        【讨论】:

          【解决方案7】:

          我用这个角6

          试试这个。

          ^([0-9]\.[0-9]{1}|[0-9]\.[0-9]{2}|\.[0-9]{2}|[1-9][0-9]\.[0-9]{1}|[1-9][0-9]\.[0-9]{2}|[0-9][0-9]|[1-9][0-9]\.[0-9]{2})$|^([0-9]|[0-9][0-9]|[0-99])$|^100$
          

          验证 0.00 - 100。有两位小数。

          希望这会有所帮助

          <input matInput [(ngModel)]="commission" type="number" max="100" min="0" name="rateInput" pattern="^(\.[0-9]{2}|[0-9]\.[0-9]{2}|[0-9][0-9]|[1-9][0-9]\.[0-9]{2})$|^([0-9]|[0-9][0-9]|[0-99])$|^100$" required #rateInput2="ngModel"><span>%</span><br>
          

          数字应介于 0 到 100 之间

          【讨论】:

          • 更准确的一个^([0-9]\.[0-9]{1}|[0-9]\.[0-9]{2}|\.[0- 9]{2}|[1-9][0-9]\.[0-9]{1}|[1-9][0-9]\.[0-9]{2}|[0 -9][0-9]|[1-9][0-9]\.[0-9]{2})$|^([0-9]|[0-9][0-9] |[0-99])$|^100$
          • 这对我来说非常有效,因为答案的表达式允许小数点后 3 位以上。
          【解决方案8】:

          0 到 100 的正则表达式,带小数点。

          ^100(\.[0]{1,2})?|([0-9]|[1-9][0-9])(\.[0-9]{1,2})?$
          

          【讨论】:

            【解决方案9】:

            为了提供最短的解决方案,这里是我的:

            ^([1-9]\d?|100)$

            working fiddle

            【讨论】:

              【解决方案10】:

              1 - 1000 前导 0

              /^0*(?:[1-9][0-9][0-9]?|[1-9]|1000)$/;
              

              它不应该接受0000000000

              它应该接受1010010001

              【讨论】:

                【解决方案11】:

                这似乎是使用if 语句的更好解决方案:

                num = 55
                if num <= 100 and num >= 1:
                    print("OK")
                else:
                    print("NOPE")
                

                【讨论】:

                • 好吧,我既不赞成也不反对,因为解决方案更合适,尽管它离回答问题还差得很远。
                【解决方案12】:

                介于 0 到 100 之间

                /^(\d{1,2}|100)$/
                

                或介于 1 到 100 之间

                /^([1-9]{1,2}|100)$/
                

                【讨论】:

                • 这不是一个很好的答案。第一个版本匹配 0,问题说不匹配。第二个版本不匹配两位数。
                【解决方案13】:

                这是非常简单的逻辑,所以不需要regx。

                改为使用三元运算符

                var num = 89;
                var isValid = (num <=  100 && num > 0 ) ? true : false;
                

                它会为你施展魔法!!

                【讨论】:

                • 除非您需要正则表达式。例如,假设一个预定义的 xml 模板,其中限制输入的唯一方法是在模板中放置一个正则表达式。那么这里就没有魔法了。
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-09-21
                相关资源
                最近更新 更多