Показать сообщение отдельно
  #1 (permalink)  
Старый 12.12.2011, 09:53
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Парсинг селекторов
Привет всем. Написал регу для раскладки селектора по частям

var scanSelector = prompt("Enter selector: ", '#cssplay > ns|a.p1:active .p4 img[src=".png\\\\"], a|ns[rel="te\\"]st\\\\"]:not(div[test="name"])'),

	rega = /\s*(?:(\*|(?:(?:\*|[\w\-]+)\|)?[\w\-]+))?(?:\[\s*(?:((?:[\w\-]+\|)?[\w\-]+)\s*((?:~|\^|\$|\*|\|)?=)\s*)?((?:".*?(?:(?:[\\]{2}(?="))|[^\\])"|'.*?(?:(?:[\\]{2}(?='))|[^\\])'|[^"'].*?)?)\s*\])?(?:(\.|#)([\w\-]+))?(?:(:(?::)?)([\w\-]+)(?:\(\s*([^\s,]+)\s*\))?)?(?:(?:\s*(?=\s))?(?:(?:\s(?=,|>|\+|~))?([\s,>+~](?!$)))?)?/g,

	nm = [
		"Fragment: ",
		"Tag name: ",
		"Attribute name: ",
		"Condition type: ",
		"Attribute name/value: ",
		"Id or Class prefix: ",
		"Id or Class name: ",
		"Pseudo type: ",
		"Pseudo name: ",
		"Pseudo content: ",
		"Next search type: "
	],
	m = null, s = "CSS Selector: " + scanSelector + "\n\n",
	lastIndex = 0;

rega.lastIndex = 0;

do {
	lastIndex = rega.lastIndex;

	m = rega.exec( scanSelector );

	for(var i = 0; i < m.length; i++ ) {
		s += nm[ i ] + "'" + m[ i ] + "'\n";
	}
	s += "\n";

} while( ( lastIndex < rega.lastIndex ) && ( rega.lastIndex < scanSelector.length ) );

alert( s );


Помогите найти какой нить необычный селектор, который эта рега просто не захочет скушать.

СПС

Последний раз редактировалось devote, 12.12.2011 в 23:20.
Ответить с цитированием