修复JS正则捕获组问题:避免匹配制表符分隔的重复数字
修复正则以匹配仅空格分隔的重复数字串
你的问题出在正则里的 \s 元字符上——\s 会匹配任意空白字符,包括空格、制表符(\t)、换行符(\n)、换页符等,这就导致你的正则会误匹配制表符分隔的字符串,不符合题目要求的「仅由单个空格分隔」。
修复后的正则
把正则里的 \s 替换成普通的空格 即可:
let repeatNum = "42 42 42"; let reRegex = /^(\d+) \1 \1$/; // 修复后的正则 let result = reRegex.test(repeatNum); console.log(result); // 输出 true
详细解释
^和$:锚定字符串的开头和结尾,确保整个字符串完全匹配,不会出现多余的前缀或后缀字符(\d+):捕获一个或多个连续数字的分组,后续用\1引用这个分组的内容,实现「重复相同数字」的匹配- 替换后的空格
:严格匹配单个空格作为分隔符,只会识别空格,不会匹配制表符或其他空白字符
验证效果
测试制表符分隔的字符串时,正则会返回 false,符合题目要求:
let tabSeparated = "42\t42\t42"; console.log(reRegex.test(tabSeparated)); // 输出 false
内容的提问来源于stack exchange,提问作者a-pedro
相关产品推荐
相关产品推荐

