javascript - 优雅的替换括号的方法

标签 javascript regex

我想用<>替换匹配的()[]对。例如,

abc(def)hij -> abc[def]hij
abc<def>hij -> abc[def]hij

我所做的是这样的:
function getParensReplaced(str) {
    return str && str.replace(/<([^>]+)>/g, function(str, p){
        return '[' + p + ']';
    }).replace(/\(([^\)]+)\)/g, function(str, p){
        return '[' + p + ']';
    });
}

但这看起来并不好。有任何改进的想法吗?

最佳答案

怎么样:

\([^\)]*?\)|<[^>]*?>

这样就可以:
function getParensReplaced(str) {
    return str && str.replace(/\(([^\)]*?)\)|<([^>]*?)>/g, function(str, p,q){
        return (p == undefined) ?  '[' + q + ']': '[' + p + ']';
    });
}

JSfiddle:http://jsfiddle.net/GgrQm/

关于javascript - 优雅的替换括号的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599962/

相关文章:

javascript - 用于匹配 URL 中多个正斜杠的正则表达式

javascript - Google+ 按钮损坏工具提示

javascript - 如何捕获远程加载数据的点击事件并用 angularJS 显示

javascript - CSS3 - 用可变数量的不同大小的矩形填充网页的最短方法

javascript - 重定向到 javascript 文件中的新选项卡

javascript - 如果没有数据,如何隐藏DataTables导出按钮?

java - 正则表达式可选组 |一开始不工作

java - 匹配到逗号前最后 3 个字符的正则表达式

java - 如何使用 Java Regex 查找字符串中所有重复的字符序列?

regex - 字符串——正则表达式中的 x y