2011-12-01 56 views
2

一段時間以來,我一直試圖在JavaScript中理解正則表達式,但它非常複雜。您可以告訴我如何使用正則表達式分別從以下URL中單獨兌換每個值?JavaScript中的基本正則表達式

URL

/first/middle/last 

返回

var first = "first" 
var middle = "middle" 
var last = "last" 

謝謝!

回答

1

我認爲你應該使用split()對於這種事情,但如果你真的喜歡使用regexp你可以這樣做:

var url = "/first/middle/last"; 
var reg = /\/(.*)\/(.*)\/(.*)/; 
var matches = reg.exec(url); 
// matches[0] == first 
// matches[1] == middle 
// matches[2] == last 
1

我不知道這是否回答你的問題,但你要達到什麼是最好的分裂做:

var parts = "/first/middle/last".split("/"); 

var first = split[1]; 
var middle = split[2]; 
var last = split[3]; 

注意,指數將在0開始,但將包含任何東西之前第一次出現的拆分字符串。在你的例子中,這只是一個空字符串,因爲字符串以斜槓開始。

1

只使用分裂()

var mystring = "/first/middle/last" 

var mysplitstring = mystring.split("/"); 

var first = mysplitstring[1]; 
var middle = mysplitstring[2]; 
var last = mysplitstring[3]; 
1

在這裏你去試試這個:

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

1

這不會回答你的問題,但你可以使用this真棒工具來生成和測試正則表達式。當我需要使用regEx時,它總是派上用場。

3

這當然是更容易使用字符串分裂法做的,但這裏有學習目的的正則表達式做的一種方式:

var url = '/first/middle/last'; 
var regex = /^\/(.+)\/(.+)\/(.+)$/; 
regex.exec(url); // ["/first/middle/last", "first", "middle", "last"] 

,並幫助您瞭解這個正則表達式(和一般的希望正則表達式),讓我們仔細看看它。

第一和最後一個斜槓(/)標記RegExp對象(不包括改性劑,你也許可以做到沒有現在)的開頭和結尾,就像"'標記字符串的開頭和結尾。

^字符在開頭意味着「字符串的開始」,所以它意味着匹配這個正則表達式必須在字符串的開頭。

$最後的字符表示「字符串的結尾」,所以匹配必須結束到字符串的末尾。這與開頭的^字符結合意味着比賽必須覆蓋整個字符串。

正則表達式的其餘部分是\/(.+)部分的三次。前兩個字符(\/)只是匹配一個斜槓。我們不能直接匹配/的斜槓,因爲那樣會結束正則表達式,所以我們使用反斜槓將其轉義。 .+部分匹配除換行符(.)以外的任何字符一次或多次(+)。該部分周圍的圓括號稱爲捕獲圓括號,並記住它們捕獲的字符串,換句話說,它們使"first","middle""last"出現在結果數組中。因此整個正則表達式匹配「字符串開始,斜線,一個或多個字符(記住這些),斜線,一個或多個字符(記住這些),斜槓,一個或多個字符(記住這些),字符串的結尾」。

您可以在例如MDN's RegExp documentation的正則表達式中找到有關特殊字符(點,加號,括號,反斜槓等)的更多信息。