如何使用正则表达式分割字符串得到指定双元素数组?
解决方案:分割字符串为指定的二元数组
思路分析
我来帮你梳理下解决思路:咱们的目标是把给定字符串拆成两个元素的数组,第一个是前面的完整句子,第二个是括号里的大写字母组合。首先得抓住原字符串的结构特点——它的结尾是 (大写字母组合),所以我们可以从这里入手:
- 构造一个正则表达式,精准匹配字符串末尾的
(XXX)部分,同时用捕获组把括号里的大写字母提取出来; - 利用JavaScript
split方法的特性:如果正则包含捕获组,捕获到的内容会被加入分割后的数组;再通过$锚定到字符串结尾,这样就不会在数组末尾产生多余的空元素,刚好得到长度为2的数组。
具体实现代码
const str = 'Some words in a sentence (ABC)'; // 正则匹配末尾的空格+括号+大写字母组合,同时捕获大写字母部分 const regex = /\s*\(([A-Z]+)\)$/; const arr = str.split(regex); // 验证断言要求 console.log(arr[0]); // 输出: 'Some words in a sentence' console.log(arr[1]); // 输出: 'ABC' console.log(arr.length); // 输出: 2
正则表达式细节拆解
\s*:匹配0个或多个空格,兼容句子和括号之间有空格或者无空格的情况;\(:转义左括号,匹配实际的左括号字符(因为括号在正则里是特殊字符);([A-Z]+):捕获组,匹配1个及以上的大写字母,这部分就是我们要的数组第二个元素;\):转义右括号,匹配实际的右括号字符;$:锚定到字符串结尾,确保我们只匹配字符串最末尾的括号部分,不会干扰字符串中间可能出现的括号。
这样处理后,完全满足你提出的所有断言要求。
内容的提问来源于stack exchange,提问作者user3034151
相关产品推荐
相关产品推荐

