【发布时间】:2011-05-24 09:46:05
【问题描述】:
var a = "[i] earned [c] coin for [b] bonus";
如何在 JavaScript 中从上面的变量中获取字符串“__为 __ 奖金赚取 __ 硬币”?
我要做的就是将所有括号[]及其内容替换为__。
【问题讨论】:
标签: javascript regex
var a = "[i] earned [c] coin for [b] bonus";
如何在 JavaScript 中从上面的变量中获取字符串“__为 __ 奖金赚取 __ 硬币”?
我要做的就是将所有括号[]及其内容替换为__。
【问题讨论】:
标签: javascript regex
a = a.replace(/\[.*?\]/g, '__');
如果您希望换行符成为可能,您可以使用:
a = a.replace(/\[[^\]]*?\]/g, '__');
【讨论】:
* 不贪婪。
[ 和] 这样的字符在正则表达式中有特殊的含义,所以当你真正想要一个括号时,你必须用\ 来转义它。所以第一项 (\[) 匹配左括号。然后是[^\]]。 [ 和最后的] 表示允许将一组字符放在其中的字符类。在这种情况下,我们只需要一个字符(] 尽管我们需要在此处将其转义为 \],否则正则表达式解析器可能会认为我们结束了该类),但我们使用带有插入符号 (^) 的字符类来意思是“不”(不是括号)。
a = a.replace(/\[[^\]]+\]/g, '__');
【讨论】:
这是一个有趣的组匹配示例。
var text = "[i] italic [u] underline [b] bold";
document.body.innerHTML = text.replace(/\[([^\]]+)\]/g, '(<$1>$1</$1>)');
/ // BEGIN pattern
\[ // FIND left bracket (literal) '['
( // BEGIN capture group 1
[ // BEGIN character class
^ // MATCH start anchor OR
\] // MATCH right bracket (literal) ']'
] // END character class
+ // REPEAT 1 or more
) // END capture group 1
\] // MATCH right bracket (literal) ']'
/ // END pattern
g // FLAG global search
【讨论】: