JavaScript的正则表达式

ale*_*pro 2 javascript regex

试图解析以下文本:

这是[姓名] John的[/ name]第一个教程之一.

要么

请邀请[姓名] Steven [/ name]参加会议.

我需要的是在Javascript中使用regexp来获取名称.做的var str = body.match(/[name](.*?)[\/name]/g);工作,但我怎么得到它的内部?

mae*_*ics 5

尝试使用正则表达式的"exec"方法将匹配组作为数组:

var getName = function(str) {
  var m = /\[name\](.*?)\[\/name\]/.exec(str);
  return (m) ? m[1] : null;
}

var john = getName("This is one of [name]John's[/name] first tutorials.");
john // => "John's"
var steve = getName("Please invite [name]Steven[/name] to the meeting.");
steve // => "Steven"
Run Code Online (Sandbox Code Playgroud)

通过使用全局RegExp,可以轻松扩展以查找所有出现的名称:

var getAllNames = function(str) {
  var regex = /\[name\](.*?)\[\/name\]/g
    , names = []
    , match;
  while (match = regex.exec(str)) {
    names.push(match[1]);
  }
  return names;
}

var names = getAllNames("Hi [name]John[/name], and [name]Steve[/name]!");
names; // => ["John", "Steve"]
Run Code Online (Sandbox Code Playgroud)