在正则表达式中搜索单词

时间:2015-04-03 23:23:21

标签: javascript regex

我尝试制作用户可以输入字符串!exchange然后输入一个字词的内容。例如,如果交换后的单词匹配单词huntsman,我希望它可以做一件事,而另一件事则用于另一个单词。

我已经尝试过了

var req = msg.match(/^!exchange/i); //msg is the string that I'm testing

但这并不奏效。我也试过了

var req = msg.match(/^!exchange \b/i); 

但我得到了同样的结果。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

要在!exchange之后获取该字词,请使用捕获组:

/^!exchange\s+(\w+)/i

现在req[1]将包含!exchange之后的单词。

function doit(input) {
  var msg = input.value;
  var req = msg.match(/^!exchange\s+(\w+)/i);
  if (req) {
    document.getElementById("result").textContent = req[1];
  }
}
<input type="text" id="input" onchange="doit(this)">
<br>Word is <span id="result"></span>

答案 1 :(得分:0)

听起来你想要这样的东西:

var msg = "!exchange apple"; msg.match(/^!exchange (.*)/i);

(返回["!exchange apple", "apple"]

String.match()返回原始字符串的数组,后跟任何匹配的组。你需要将“!exchange”之后的每个单词作为一个组匹配,以便将它们放回到数组中。