2012-10-29 26 views
0

之間的所有字符我對正則表達式有一個非常基本的理解,我發現這很難實現。Javascript正則表達式得到2個字符和

有一個HTML像這樣

<select> 
    <option value="%001% 25cm Single" label="%001% 25cm Single">%001% 25cm Single</option> 
    <option value="%002% 25cm Single" label="%002% 25cm Single">%002% 25cm Single</option> 
    <option value="%003% 25cm Single" label="%003% 25cm Single">%003% 25cm Single</option> 
</select> 

%001%多種選擇,%002%等將被用於排序的選項,開啓%和關閉%以及內容選擇之間也需要從前端隱藏起來。但是,在完成任何操作之前,%xxx%需要用正則表達式抓取。

因此,看起來需要匹配以%開頭的字符串的每個選項的第一個匹配項,後跟任意3個數字,後跟另一個%。 %之間的數字是什麼需要返回訂購

還需要有一個正則表達式規則,匹配並返回之間的%和3號,以便它們可以使用jQuery從前端隱藏。

到目前爲止,我已經

/^%.{3}%/ 

所有幫助表示讚賞

+0

只是好奇,爲什麼你是「排序」選項。這些選項將按照您在HTML源代碼中輸出它們的順序進行排序,爲什麼需要在源代碼中提供訂單標籤? –

+0

的。將匹配任何東西。在這種情況下你想要的是\ d:/%\ d {3}%/因爲我是一個數字,當涉及到記住使用量詞時,我實際上會輸入/%\ d \ d \ d%/ in這個案例。 – Jarmund

回答

0

用於獲取%123%部分使用:%[\d]{3}%

+0

不需要角色類;正則表達式'%\ d {3}%'是等價的。 – Phrogz

+0

是的,我確實是%% [0-9] {3}%;)。謝謝 – sataniccrow

0

一般情況下,要找到所有的字符,直到另一停止字符,你可以使用:

/[^%]+/ // One or more characters which are not a % character 
/.+?%/ // One or more non-newline characters, as few as possible, up to a % 

所以,要找到一個%其次是任何東西,直到下一次%,您可以使用:

/%[^%]+%/ 
/%.+?%/ 

但是,如果你知道有必須始終恰好有三個數字字符,那麼你應該使用(更嚴格)的正則表達式:

/%\d{3}%/ 

如果你想保留匹配的任何部分作爲單獨的引用,通過將它包含在括號中使其成爲「捕獲」。每個捕捉會出來由String.prototype.match返回的數組的一個獨立部分:

var marker = /%(\d{3})%/; 
var string = "%001% 25cm Single"; 
var results = string.match(marker); 
var number = results && results[1]; // "001" 
相關問題