【问题标题】:javascript regular expression matching on very specific search (Searching start of string)javascript正则表达式匹配非常具体的搜索(搜索字符串的开头)
【发布时间】:2019-05-09 15:49:44
【问题描述】:

给定以下正则表达式

/144*/g

我希望它匹配 14450、14445,但不是 14。

我想要的是匹配前 3 个字符为 144 以及之后的任何字符。

var zip = '14';//Don't want this to match
var search = new RegExp('144*', 'g');
if (zip.match(search)) //TRUE

【问题讨论】:

  • 试试144\d+14\d+
  • 为什么不只是if (x.substr(0, 3) === "144")
  • 类似/^144\d+$/
  • 据我所知应该是/^144.*$/i。这是大约5位数的邮政编码吗?如果是这样,你需要/^144\d\d$/
  • 克里斯在罗切斯特,所以这肯定是关于邮政编码的。答案应该考虑这一点,即使 OP 没有提到它,因为变量名和上下文强烈建议它。

标签: javascript regex


【解决方案1】:

我想要的是匹配前 3 个字符为 144 以及之后的任何字符。

您不需要正则表达式或字符串操作。您可以只使用string.indexOf 并检查144 是否位于字符串的开头(第零个索引):

const isOneFourFour = zip.indexOf('144') === 0

【讨论】:

    【解决方案2】:

    您可以使用这个正则表达式,它将匹配任何以144 开头的文本,但不会匹配14

    ^(?!14$)144.*$
    

    这个否定的前瞻 (?!14$) 停止匹配 14 数字,其余的都是允许的。

    Regex Demo

    负前瞻确实是多余的,你可以写成^144.*$^144\d*$

    【讨论】:

      【解决方案3】:

      您的模式144* 匹配 14,然后重复 0+ 次数字 4。

      这将匹配例如 14、144 或 14444444

      如果您希望匹配以 14 开头,并且后面应该是 1 位或更多位,您可以使用:

      ^144\d+

      Regex demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-04
        • 2012-02-23
        • 1970-01-01
        • 2020-05-22
        • 2013-10-27
        • 2015-05-05
        • 1970-01-01
        相关资源
        最近更新 更多