2013-07-17 292 views
1

我試圖用一個正則表達式返回字符串匹配

此得到的只是一個字符串的一部分是我測試

class1 container _box _box_CEC493

的字符串,長度爲應用於一系列的類元件。

什麼,我想得只是CEC493這改變,因爲正則表達式將被應用到很多不同的元素(因此字符串像上面的)

我現在使用的正則表達式是

/\s_box_([0-9a-zA-Z]+)/

返回

_box_CEC493, CEC493

如何修改它以獲得第二個值(CEC493)?

謝謝

+0

是它始終將是'CEC493'或者是該值的動態?它有時會成爲'CEC523'嗎? – Banning

+3

'_box_CEC493,CEC493'看起來像匹配*數組*看作一個字符串,在這種情況下'CEC493'在'matchVar [1]' –

+0

@Banning是它是一個動態值。 – Donnie

回答

2

你很可能只是分割字符串:

var str = "class1 container _box _box_CEC493"; 
var match = str.split('_').pop(); 
alert(match); 

DEMO

+1

我認爲他想要使用正則表達式,儘管這也可以工作 –

+0

只要'CEC493'總是在這個工作結束 – Banning

0

的標準方法的正則表達式回來是這樣的:

[0]:整個結果

[1]:第一個括號捕獲組

使人們訪問這些標準的方法是用result[1]。這是否會導致您的案件有任何問題?

+0

這就是我現在做的。 但有可能是正則表達式不匹配任何東西,所以結果[1]將爲空。 我認爲實際上有一種方法可以直接通過正則表達式達到我想要的結果。謝謝您的意見。 – Donnie

+0

爲什麼不檢查'typeof result [1] =='undefined''? – casraf

+0

除非您的捕獲組被標記爲可選,否則數組將存在兩個值,否則測試函數將完全返回null。既然你使用了+而不是*,那麼爲了匹配,組中必須有一些東西。 – Katana314

0

[更新]

,而不是選擇所有的字符,直到選擇不必要的字符,,因爲你是從數量的類選擇,有可能是你有單獨_box_..類沒有空間在它之前,所以不要在正則表達式選擇器的開始處使用空格。

str.match(/_box_([^\s]*)/)[1] 

jsfiddle