如何使用JavaScript提取字符串中从第一个[到最后一个]的子串
解法1:下标定位法(兼容性最好,适用所有场景)
组合使用indexOf()获取第一个[的下标,lastIndexOf()获取最后一个]的下标,再传给substring即可,完全不依赖字符串固定长度:
const oldString = "[[{abc}, {abc}, {abc}]]....blah"; const startIndex = oldString.indexOf('['); const endIndex = oldString.lastIndexOf(']'); // substring左闭右开,所以结束下标要+1才能包含最后一个] const newString = oldString.substring(startIndex, endIndex + 1); // 输出结果:"[{abc}, {abc}, {abc}]"
如果需要处理字符串中不存在[或]的边界场景,可以加一层判断避免报错:
const startIndex = oldString.indexOf('['); const endIndex = oldString.lastIndexOf(']'); let newString = ''; if (startIndex !== -1 && endIndex !== -1 && startIndex < endIndex) { newString = oldString.substring(startIndex, endIndex + 1); }
解法2:正则匹配法(写法更简洁)
利用正则的贪婪匹配特性,直接匹配从第一个[到最后一个]的所有内容:
const oldString = "[[{abc}, {abc}, {abc}]]....blah"; const newString = oldString.match(/\[.*\]/)[0]; // 输出结果:"[{abc}, {abc}, {abc}]"
正则说明:\[匹配左中括号,.*为贪婪匹配,会尽可能向后匹配所有字符直到遇到最后一个\],刚好匹配你需要的内容范围。
内容的提问来源于stack exchange,提问作者answerSeeker
相关产品推荐
相关产品推荐

