正则表达式path.match(/ user /);

时间:2013-11-22 04:59:31

标签: javascript regex

   var path = '/user/tobi'

   path.match(/user/);
      //result: ["user"]
   path.match(/(user)/);
    //result: ["user", "user”]

为什么添加'()'会产生两个用户结果?

3 个答案:

答案 0 :(得分:2)

查看regexps documentation

String#match返回由匹配字符串和所有submatches组成的数组,由括号中的regexp声明。

答案 1 :(得分:1)

因为捕获它们的内容是括号在正则表达式中的作用。第零个元素是整个匹配,每个后续的元素按照它们的引入顺序对应于“捕获组”(即括号对)。

演示:

path.match(/(u)s((e)(r))/)
    //result: ["user", "u", "er", "e", "r"]

答案 2 :(得分:1)

由于您未在正则表达式中指定g,因此匹配函数的行为与 regexp.exec(字符串)。根据其文档,exec方法的结果包含匹配的子字符串和捕获括号。

请检查以下网址

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FRegExp%2Fexec