2013-03-03 46 views
1

我正在嘗試使用JavaScript正則表達式與exec函數並希望獲得組的匹配。我無法弄清楚爲什麼我沒有找到比賽。JavaScript正則表達式無法獲得匹配的組

這裏是我的代碼:

var elementClass="validate[required]" 
var myRegexp = /validate\\[(*)\\]/g; 
var match = myRegexp.exec(elementClass); 

比賽是空每次。我無法弄清楚爲什麼。它應該變得「需要」。

感謝您的幫助!

+1

Java!= JavaScript。我改變了標題以反映這一點。 – JayC 2013-03-03 00:13:50

回答

2

1)如果你想在方括號中的部分僅匹配,你應該使用組

var result = match[1]; 
+0

在使用答案之前,有沒有人打擾過測試他們的代碼? – 2013-03-03 00:07:02

+0

仍然無法正常工作。返回'undefined'。 – 2013-03-03 00:08:45

+0

@Kolink現在無法檢查它,但沒有看到爲什麼它爲空的任何原因 – VladL 2013-03-03 00:11:51

3

使用此相反,你必須多斜線

var myRegexp = /validate\[(.*?)\]/g; 

2):

首先,你只需要一個反斜槓到escap e - 否則,您正在尋找一個字面反斜槓,然後是您要逃脫的特殊含義。

其次,*只是意味着「零或多個最後的東西」,在這種情況下,這是沒有意義的,因爲那裏什麼也沒有。 .的意思是「任何東西」(幾乎),所以.*的意思是「任何數量的任何東西」。

最後,g標誌在這裏是不必要的,特別是如果你試圖捕獲結果的一部分。

+0

好的,但我注意到的一件事是我不斷得到2個結果。所以比賽有2個元素。第一個元素總是剛好放入的內容,第二個元素是括號內的部分,在這種情況下是必需的。 – user1513171 2013-03-03 00:12:30

+0

這就是正則表達式的工作原理。匹配數組的第一個元素始終是完全匹配,然後每個後續條目對應下一個子模式(在本例中爲'disabled'字符串) – 2013-03-03 00:13:08

+0

好的,感謝您的幫助! – user1513171 2013-03-03 00:14:16