使用jQuery移除字符串中最后一对括号及内部文本
解决jQuery移除字符串最后一对括号及其内部文本的问题
你的原代码使用了全局匹配的正则/\(.*?\)/g,会匹配并删除所有括号对,要实现仅移除最后一对的效果,只需修改正则表达式即可。
核心思路
利用正则的贪婪匹配特性,捕获最后一对括号之前的所有内容,替换时保留这部分内容,丢弃最后一对括号及其内部文本。
代码实现
基础版(保留括号前的空格)
$('p').text(function(_, text) { // 匹配最后一对括号及其内容,保留前面所有内容 return text.replace(/(.*)\([^()]*\)/, '$1'); });
优化版(移除括号前的空格)
如果需要同时去掉括号前面的空格,可调整正则:
$('p').text(function(_, text) { return text.replace(/(.*?)\s*\([^()]*\)/, '$1'); });
正则说明
(.*):贪婪匹配字符串开头到最后一个(之前的全部内容,存入捕获分组1\([^()]*\):匹配最后一对括号及内部文本([^()]*确保只匹配无嵌套的括号内容)\s*:匹配括号前的任意数量空格(仅优化版包含)- 替换为
$1即保留分组1的内容,丢弃最后一对括号部分
效果测试
针对你的示例字符串:
"This is a (test) string (where) last parentheses (needs) to be (removed) "
- 基础版处理后结果:
"This is a (test) string (where) last parentheses (needs) to be " - 优化版处理后结果:
"This is a (test) string (where) last parentheses (needs) to be"
内容的提问来源于stack exchange,提问作者Abbasi
相关产品推荐
相关产品推荐

