正则表达式有助于从字符串中提取值

时间:2014-09-20 15:14:06

标签: javascript regex

我在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} ]

你如何使用正则表达式来提取它?

请帮助

3 个答案:

答案 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]+):\+([^\[\]]+)\]

DEMO

<强>解释

  • @匹配文字@符号。
  • \[匹配文字[符号。
  • ([a-z\d]+)捕获一个或多个字符小写字母或数字。
  • :\+字面上匹配:+
  • ([^\[\]]+)一次或多次捕获[]的所有字符。
  • \]文字]符号。

答案 2 :(得分:1)

尝试以下方法,关键是正确转义保留的特殊符号:

@\[([\d\w]+):\+([\s\w]+)\]