2015-04-03 72 views
0

我想讓用戶可以在其中輸入一個字符串,!exchange然後輸入一個單詞。例如,如果交換後的單詞匹配huntsman這個詞,我希望它做一件事,另一件事用於另一個單詞。搜索一個詞的正則表達式

我試圖做

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

但是,這並不工作。我也試過

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

但是我得到了同樣的結果。誰能幫忙?

+3

什麼是 「不工作」 是什麼意思?請明確點。 – 2015-04-03 23:25:08

+0

By not does not work,I mean that match method does not find a match for!exchange in msg string。 – dragonbanshee 2015-04-03 23:26:31

+0

如果'!exchange'是字符串中的第一個單詞,則應該找到它,否則,如果它可以位於msg字符串中的任何位置 - 刪除'^'。 – sinisake 2015-04-03 23:27:09

回答

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>

0

這聽起來像你想是這樣的:

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

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

String.match()返回原始字符串數組,然後任何匹配的組。您需要將「!exchange」之後的每個單詞作爲一個組來匹配,以將它們返回到數組中。

相關問題