【发布时间】:2016-04-20 01:59:13
【问题描述】:
我有这样的字符串"[Total MM] / [Total-MD] - [Total-MC]"。我只想在 javascript 上使用正则表达式获取 ] 和 [ 之间的字符。上面这个字符串的例子,只返回"/"和"-"
【问题讨论】:
标签: javascript regex
我有这样的字符串"[Total MM] / [Total-MD] - [Total-MC]"。我只想在 javascript 上使用正则表达式获取 ] 和 [ 之间的字符。上面这个字符串的例子,只返回"/"和"-"
【问题讨论】:
标签: javascript regex
试试这个
\]\s*([^[]+?)\s*\[
var re = /\]\s*([^[]+?)\s*\[/g;
var str = '[Total MM] / [Total-MD] - [Total-MC]';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
【讨论】:
"[" 和"]"
有多种方法可以做到这一点,但我认为最直接的方法是两个正则表达式:一个匹配 ] 和 [ 之间的内容,另一个删除括号和空格:
var str = "[Total MM] / [Total-MD] - [Total-MC]";
str
.match(/\].*?\[/g)
.map(m => m.replace(/\]\s*|\s*\[/g, ''));
【讨论】:
=>,它看起来像在 C# 中的 LinQ 中。一样吗?
=> 替换为 function 语法
创建一个匹配括号内的 IS 的正则表达式,但不捕获它;然后是捕获其他所有内容的替代方法。
/\[.*?\]|([^[]*)/g
^^^^^^^ MATCH STUFF IN BRACKETS, DO NOT CAPTURE
^^^^^^ MATCH ANYTHING ELSE, DO CAPTURE
见https://regex101.com/r/oQ8pB2/1。请参阅右侧的“匹配信息”。
【讨论】: