【问题标题】:How do I specify this range using a regular expression in JavaScript?如何在 JavaScript 中使用正则表达式指定此范围?
【发布时间】:2017-07-24 13:49:08
【问题描述】:

我需要检查一个数字的前 6 位数字是否来自 222100-272099。 这是在 JavaScript 中,我不知道如何去实现它。 我最初的想法是这样的: match(/^2[2-7][0-9]$/),但我不确定如何正确指定这个范围。

【问题讨论】:

  • (/^2[2-7][0-9]{4}$/) 可能是您想要的? {number} 是您想要的前一个字符的数量。如果这能解决问题,我会写一个答案。
  • 欢迎来到 Stack Overflow。请先阅读帮助中心,如何在这个论坛上提出一个好的问题:stackoverflow.com/help/how-to-ask。这样我们可以更好地理解您的问题,并可以帮助您解决问题。
  • @sniperd 您的正则表达式也将匹配 279000,这不在范围内..但这不是正则表达式的工作。
  • 哦,对了!哈。我可能应该阅读整个问题:)

标签: javascript regex numbers range


【解决方案1】:

您不应该为此使用正则表达式。最好是对字符串进行子串化,然后比较:

const n = Number.parseInt(str.substr(0, 6), 10);
if (222100 <= n && n <= 272099) {
   // ...

【讨论】:

  • 小心这个。它还将匹配22210a25ujid。您可能也想通过parseInt() 运行它。
  • 真的吗? const str = '22210a'; const n = str.substr(0, 6); 222100 &lt;= n &amp;&amp; n &lt;= 272099 为我返回 false。
  • 这是一个更理想的解决方案。效果很好 - 谢谢!
  • 不,你是对的。比较运算符coerce both sides to Number if they are not both Strings.
【解决方案2】:

正则表达式用于字符串中的模式匹配: Wikipedia: Regular expression

您可以使用 JavaScript 的 parseInt() 函数将您的 6 个数字字符串转换为可用于进行简单大于/小于检查的数字。 W3C: parseInt()

【讨论】:

    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2016-04-07
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多