代码之家  ›  专栏  ›  技术社区  ›  Alvaro

防止RegExpt返回不在括号[duplicate]之间的匹配字符串

  •  0
  • Alvaro  · 技术社区  · 7 年前

    我想用 regular expression 然后访问括号中的子字符串:

        var myString = "something format_abc"; // I want "abc"
    
        var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);
    
        console.log(arr);     // Prints: [" format_abc", "abc"] .. so far so good.
        console.log(arr[1]);  // Prints: undefined  (???)
        console.log(arr[0]);  // Prints: format_undefined (!!!)

    我做错了什么?


    我发现上面的正则表达式代码没有问题:我测试的实际字符串是:

    "date format_%A"
    

    报告“%A”未定义似乎是一种非常奇怪的行为,但它与这个问题没有直接关系,所以我打开了一个新的, Why is a matched substring returning "undefined" in JavaScript? .


    问题是 console.log 将其参数视为 printf 语句,并且由于我记录的字符串( "%A" )有一个特殊的值,它试图找到下一个参数的值。

    0 回复  |  直到 5 年前