我在javascript中有一个字符串,如
"some text @[14cd3:+Seldum Kype] things are going good for @[7f8ef3:+Kerry Williams] so its ok"
从此我想提取2个人的名字和ID。所以数据如 -
[ { id: 14cd3, name : Seldum Kype},
{ id: 7f8ef3, name : Kerry Williams} ]
你如何使用正则表达式来提取它?
请帮助
答案 0 :(得分:2)
var text = "some text @[14cd3:+Seldum Kype] things are going " +
"good for @[7f8ef3:+Kerry Williams] so its ok"
var data = text.match(/@\[.+?\]/g).map(function(m) {
var match = m.substring(2, m.length - 1).split(':+');
return {id: match[0], name: match[1]};
})
// => [ { id: '14cd3', name: 'Seldum Kype' },
// { id: '7f8ef3', name: 'Kerry Williams' } ]
// For demo
document.getElementById('output').innerText = JSON.stringify(data);
<pre id="output"></pre>
答案 1 :(得分:1)
从组索引1获取id,从组索引2获取名称。
@\[([a-z\d]+):\+([^\[\]]+)\]
<强>解释强>
@
匹配文字@
符号。\[
匹配文字[
符号。([a-z\d]+)
捕获一个或多个字符小写字母或数字。:\+
字面上匹配:+
。([^\[\]]+)
一次或多次捕获[
或]
的所有字符。\]
文字]
符号。答案 2 :(得分:1)
尝试以下方法,关键是正确转义保留的特殊符号:
@\[([\d\w]+):\+([\s\w]+)\]