2013-04-14 3 views
0

У меня есть следующие вещи - и я пытаюсь ПОЛУЧИТЬ свойство calc(100% - 14px) не повезло:Regex с фиксированной начала и конца

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 width и calc не спичек.

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

+0

это функция CSS3 https://developer.mozilla.org/en-US/docs/CSS/calc – monkeyinsight

+0

Что с квадратной скобкой в ​​конце второго вычета? – Musa

+0

@AllysondePaula, пожалуйста, подумайте о принятии ответа, который решил вашу проблему. – plalx

ответ

1

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

, если вы хотите, чтобы учесть квадратные скобки:

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

1

$ в конце вашего регулярного выражения является растягивание вашего шаблона матча до конца .. $ изображен конец строки ..

Использования width:(calc\(.*?\));

Group 1 содержит ваши необходимые данные

+0

Спасибо в данном примере работы. Но без разделенных запятых ';' в случае inline 'style =" с: calc (100% - 14px) "' не будет соответствовать –

+0

@AllysondePaula try 'width: (calc \ (. *? \)) (\ S | ;) ' – Anirudha

+0

'/width: \ s? (Calc \ (. * \))/'Работал! спасибо –

1

Кажется, что все в порядке: http://jsfiddle.net/zFacF/1/

$ делал так. * До конца. Вместо этого я добавил ;, чтобы остановить это.

+0

Будет работать в данном примере, но не работает с inline 'style =" width: calc (100% - 14px) "' без ';' - чем друг помогает мне найти '/ width: \ s?(Известково \ (. * \))/' –

1

Если вы хотите также проверить, что строка имеет такой же вид использования:

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

Первая группа (группа [1]) будет содержать требуемый результат.

Если вам не нужно использовать только проверки:

calc\(.*\) 

В этом случае результат является весь матч.

Смежные вопросы