var path = '/user/tobi'
path.match(/user/);
//result: ["user"]
path.match(/(user)/);
//result: ["user", "user”]
为什么添加'()'会产生两个用户结果?
答案 0 :(得分:2)
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