Javascript正则表达式与匹配函数的混淆
为什么数组中的第三个元素只是“.1”而不是“4.5.1”?我认为Javascript正则表达式与匹配函数的混淆,javascript,regex,Javascript,Regex,为什么数组中的第三个元素只是“.1”而不是“4.5.1”?我认为\d+将对应于“3”,而(\.\d)*将捕获剩余的小数和数字 var re=/see(第\d+(\.\d)*)章/i; var str='有关正则表达式的更多信息,请参阅第3.4.5.1章和第2.3章'; console.log(str.match(re))重复捕获组将只捕获其最后一次重复。如果要捕获所有数字和句点,应在组内重复: var re=/see(第\d+章)((?:\。\d)*)/i; var str='有关正则表达式
\d+
将对应于“3”,而(\.\d)*
将捕获剩余的小数和数字
var re=/see(第\d+(\.\d)*)章/i;
var str='有关正则表达式的更多信息,请参阅第3.4.5.1章和第2.3章';
console.log(str.match(re))代码>重复捕获组将只捕获其最后一次重复。如果要捕获所有数字和句点,应在组内重复:
var re=/see(第\d+章)((?:\。\d)*)/i;
var str='有关正则表达式的更多信息,请参阅第3.4.5.1章和第2.3章';
console.log(str.match(re))代码>
array[0] is a full match
array[1] is a group match caused by a wider parenthesis (chapter \d+(\.\d)*)
array[2] is a group match caused by the narrow parenthesis (\.\d)*