【问题标题】:How to write a regex for string matches which starts with @ or end with ,?如何为以@开头或以,结尾的字符串匹配编写正则表达式?
【发布时间】:2011-07-13 06:34:35
【问题描述】:

如何为以@ 开头或以, 结尾的字符串匹配编写正则表达式。我正在寻找 JavaScript 代码。

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    RegEx 解决方案是:

    var rx = /(^@|,$)/;
    console.log(rx.test(""));    // false
    console.log(rx.test("aaa")); // false
    console.log(rx.test("@aa")); // true
    console.log(rx.test("aa,")); // true
    console.log(rx.test("@a,")); // true

    但是为什么不简单地使用字符串函数来获取第一个和/或最后一个字符:

    var strings = [
      "",
      "aaa",
      "@aa",
      "aa,",
      "@a,"
    ];
    for (var i = 0; i < strings.length; i++) {
      var string = strings[i],
        result = string.length > 0 && (string.charAt(0) == "@" || string.slice(-1) == ",");
      console.log(string, result);
    }

    【讨论】:

      【解决方案2】:

      对于以 @ 开头或以逗号结尾的字符串,正则表达式如下所示:

      /^@|,$/
      

      或者你,可以这样做:

      if ((str.charAt(0) == "@") || (str.charAt(str.length - 1) == ",")) {
          // string matched
      }
      

      【讨论】:

        【解决方案3】:
        '@test'.match(/^@.*[^,]$|^[^@].*,$/) // @test
        '@test,'.match(/^@.*[^,]$|^[^@].*,$/) // null
        'test,'.match(/^@.*[^,]$|^[^@].*,$/) // test,
        'test'.match(/^@.*[^,]$|^[^@].*,$/) // null
        

        【讨论】:

        • +1 是唯一一个解决问题中“非此即彼”条件的人。
        猜你喜欢
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        相关资源
        最近更新 更多