Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Homework] JavaScript Basics - JavaScript Functions and Objects - Problem {6} - Count Number of DIVs. - Regex - как да мачнем всичко, освен конкретна фраза?

Здравейте,
Най-елементарното, което ми хрумва при тази задача, е да сплитна стринга по всичко, освен </div>. Но нещо не мога да се оправя с регекса.
var divs = str.split(/^<\/div>/g) - Това защо не работи и как трябва да е?
Могат да се намерят и по-заобиколни решения, но искам да разбера как работи регекс. Мерси предварително!

Тагове:
0
JavaScript Fundamentals
StanDimitroff avatar StanDimitroff 90 Точки

Можеш и ето така :

var result=str.match(/<div/g);
console.log(result.length);

match намира всички съвпадения в текущия стринг и връща резултата в масив.

Упражнявай се ето тук http://www.regexr.com/

1
17/11/2014 23:02:16
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Супер, така ще стане по-лесно. Но все пак ми е интересно и как да сплитна по всичко, освен този див

0
Filkolev avatar Filkolev 4482 Точки

Може би трябва да се разшири малко този регекс, за да хваща коректните тагове, т.е. да се затвори. Също да се преброят затварящите тагове и да се провери дали са същият брой; ако не са - да се върне по-малкото от двете. Не знам дали ще работи добре, трябва с повече примери да се тества и с невалиден код включително. 

0
Filkolev avatar Filkolev 4482 Точки

Ицо, доста трудно ще сплитнеш в този случай. И аз по принцип предпочитам да сплитвам, но тук по-добре мачвай. Ето този регекс ти мачва отварящите и затварящите тагове: 

/<div>|</div>/g

А че има начини има, но хич не са красиви. Виж например тази тема.

0
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Мерси,

Тези начини изглеждат като на китайски, но трябва да ги разучим. Иначе за мачване на отварящи дивове използвах следното:
(/<div[^>]*>/g)

Налага се, понеже може да има всякакви глупости преди затварящата скоба.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.