2013-04-14 76 views
0

我有以下的東西 - 我想,沒有運氣獲取屬性calc(100% - 14px)正則表達式有固定的開始和結束

var a = 'width:calc(100% - 14px); adsasd'; 
var b = 'width:calc(100% - 14px]; adsasd'; 

console.log(a.match('width:calc\(.*?\)$')); 
console.log(b.match('width:calc\(.*?\)$')); 

http://jsfiddle.net/zFacF/

兩者的console.log將輸出相同結果

["width:calc(100% - 14px); adsasd", 
"(100% - 14px); adsasd"] 

["width:calc(100% - 14px]; adsasd", 
"(100% - 14px]; adsasd"] 

如何從給定的字符串獲得calc(100% - 14px)

@Solved

/width:\s?(calc\(.*\))/

由於採用在線style="width: calc(100% - 14px)"沒有;與beteween widthcalc不匹配的空間。

http://jsfiddle.net/zFacF/5/

+0

它的CSS3功能https://developer.mozilla.org/en-US/docs/CSS/calc – monkeyinsight

+0

什麼最後的方括號裏是第二個calc? – Musa

+0

@AllysondePaula請考慮接受解決您的問題的答案。 – plalx

回答

1

/width:(calc\(.*\))/

如果要考慮方括號:

/width:(calc[(\[].*[)\]])/

1

$在你的正則表達式的結尾streching你的模式匹配,直到結束.. $描述字符串的結尾..

使用width:(calc\(.*?\));

Group 1包含您所需要的數據

+0

在給出的示例工作中感謝。但是,如果內聯'style =「with:calc(100% - 14px)」'不匹配 –

+0

@AllysondePaula,則不使用逗號';',如果內聯'style =「with:calc(() ;)' – Anirudha

+0

'/ width:\ s?(calc \(。* \))/'工作!謝謝 –

1

這似乎工作正常:http://jsfiddle.net/zFacF/1/

$正在使匹配一直到最後。相反,我添加了一個;來阻止這種情況的發生。

+0

可以在給定的例子下工作,但是沒有''=''width = calc(100% - 14px)''沒有';' - 比朋友幫我找到'/ width:\ s?(計算值\(。* \))/' –

1

如果要還用於驗證串具有相同的形式使用:

^width:(calc\(.*\));.*$ 

第一組(組[1])將包含所需的結果。

如果沒有隻需要驗證使用:

calc\(.*\) 

在這種情況下,結果是整場比賽。

相關問題