一段時間以來,我一直試圖在JavaScript中理解正則表達式,但它非常複雜。您可以告訴我如何使用正則表達式分別從以下URL中單獨兌換每個值?JavaScript中的基本正則表達式
URL
/first/middle/last
返回
var first = "first"
var middle = "middle"
var last = "last"
謝謝!
一段時間以來,我一直試圖在JavaScript中理解正則表達式,但它非常複雜。您可以告訴我如何使用正則表達式分別從以下URL中單獨兌換每個值?JavaScript中的基本正則表達式
URL
/first/middle/last
返回
var first = "first"
var middle = "middle"
var last = "last"
謝謝!
我認爲你應該使用split()
對於這種事情,但如果你真的喜歡使用regexp
你可以這樣做:
var url = "/first/middle/last";
var reg = /\/(.*)\/(.*)\/(.*)/;
var matches = reg.exec(url);
// matches[0] == first
// matches[1] == middle
// matches[2] == last
我不知道這是否回答你的問題,但你要達到什麼是最好的分裂做:
var parts = "/first/middle/last".split("/");
var first = split[1];
var middle = split[2];
var last = split[3];
注意,指數將在0
開始,但將包含任何東西之前第一次出現的拆分字符串。在你的例子中,這只是一個空字符串,因爲字符串以斜槓開始。
只使用分裂()
var mystring = "/first/middle/last"
var mysplitstring = mystring.split("/");
var first = mysplitstring[1];
var middle = mysplitstring[2];
var last = mysplitstring[3];
在這裏你去試試這個:
var string = "/first/middle/last";
var pattern = /([^\/]+)/g;
var result = string.match(pattern);
for (var i = 0; i < result.length; ++i) {
var value = result[i];
alert(value);
}
你也可以看看這個demo
這不會回答你的問題,但你可以使用this真棒工具來生成和測試正則表達式。當我需要使用regEx時,它總是派上用場。
這當然是更容易使用字符串分裂法做的,但這裏有學習目的的正則表達式做的一種方式:
var url = '/first/middle/last';
var regex = /^\/(.+)\/(.+)\/(.+)$/;
regex.exec(url); // ["/first/middle/last", "first", "middle", "last"]
,並幫助您瞭解這個正則表達式(和一般的希望正則表達式),讓我們仔細看看它。
第一和最後一個斜槓(/
)標記RegExp對象(不包括改性劑,你也許可以做到沒有現在)的開頭和結尾,就像"
和'
標記字符串的開頭和結尾。
^
字符在開頭意味着「字符串的開始」,所以它意味着匹配這個正則表達式必須在字符串的開頭。
$
最後的字符表示「字符串的結尾」,所以匹配必須結束到字符串的末尾。這與開頭的^
字符結合意味着比賽必須覆蓋整個字符串。
正則表達式的其餘部分是\/(.+)
部分的三次。前兩個字符(\/
)只是匹配一個斜槓。我們不能直接匹配/
的斜槓,因爲那樣會結束正則表達式,所以我們使用反斜槓將其轉義。 .+
部分匹配除換行符(.
)以外的任何字符一次或多次(+
)。該部分周圍的圓括號稱爲捕獲圓括號,並記住它們捕獲的字符串,換句話說,它們使"first"
,"middle"
和"last"
出現在結果數組中。因此整個正則表達式匹配「字符串開始,斜線,一個或多個字符(記住這些),斜線,一個或多個字符(記住這些),斜槓,一個或多個字符(記住這些),字符串的結尾」。
您可以在例如MDN's RegExp documentation的正則表達式中找到有關特殊字符(點,加號,括號,反斜槓等)的更多信息。