var path = '/user/tobi'
path.match(/user/);
//result: ["user"]
path.match(/(user)/);
//result: ["user", "user”]
为什么添加"(("会导致两个用户的结果?
看看正则表达式文档。
String#match
返回由匹配字符串和所有子匹配项组成的数组,由括号中的正则表达式声明。
因为捕获它们的内容是括号在正则表达式中所做的。第 0 个元素是整个匹配,每个后续元素对应于一个"捕获组"(即括号对(,按照它们的引入顺序。
演示:
path.match(/(u)s((e)(r))/)
//result: ["user", "u", "er", "e", "r"]
由于您没有在正则表达式中指定 g,因此 match 函数的行为为regexp.exec(string(.根据其文档,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