Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2012, 00:24
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Мой RegExp для поиска цветов
Начинаю изучать регулярные выражения. Вот моё извращение на тему "Найти цвет в строке":
re = /(?:#[a-f0-9]{3})|(?:#[a-f0-9]{6})|(?:red)|(?:orange)|(?:aqua)|(?:gray)|(?:navy)|(?:silver)|(?:black)|(?:green)|(?:olive)|(?:teal)|(?:blue)|(?:lime)|(?:purple)|(?:white)|(?:fuchsia)|(?:maroon)|(?:red)|(?:yellow)|(?:rgba?\((?:\d+,?)+\))/i

Все замечания, добавления и идеи пишите в тему

P.S. Я понимаю, что это, наверное, не кому не нужно, просто хочу понять, можно ли сделать этот рег как-то проще и лучше

Последний раз редактировалось Раед, 24.04.2012 в 18:47.
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2012, 00:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

re = /#[a-f0-9]{3}|#[a-f0-9]{6}|red|aqua|gray|navy|silver|black|green|olive|teal|blue|lime|purple|white|fuchsia|maroon|red|yellow|rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+(?:\s*,\s*[\d.]+\s*)?\)/i

alert( re.test( "red" ) ); // true
alert( re.test( "rgb(255, 234, 123)" ) ); // true
alert( re.test( "rgba(255, 234, 123, 0.1)" ) ); // true
// куча пробелов
alert( re.test( "rgba(           255,              234,               123,             0.1           )" ) ); // true
alert( re.test( "#f0fe34" ) ); // true
alert( re.test( "#fe4" ) ); // true

alert( re.test( "а нету цвета" ) ); // false
alert( re.test( "белый" ) ); // false
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 24.04.2012 в 00:44.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2012, 10:29
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

devote,
О, спасибо, думал, что | только на 1 символ действует.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2012, 16:29
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Раед,
не...прелесть или в рег. выражениях, что "или" работает с человеческой логикой, как в паскале: (a=5) or (a=6), а не так как в js, не напишешь же: a==5 || a==6 || a==7
__________________
оляля, ололо
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2012, 16:40
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

9xakep, не понял вашего примера. Как это вообще связано?))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2012, 17:56
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Вот ещё рег для поиска всяких едениц типа 1em 2pt
re=/(?:\s|^)\d+(?:px|em|%|mm|cm|pt|pc|ex)(?=\s|$)/gi

Может кто подскажет, как сделать так, чтобы передний пробел в результат не входил
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2012, 17:58
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от 9xakep
а не так как в js, не напишешь же: a==5 || a==6 || a==7
В смысле, почему не напишешь?

a = 5
alert(a==5 || a==6 || a==7)
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2012, 18:01
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Будь проще.

re=/\b\d*?(?:px|em|%|mm|cm|pt|pc|ex)\b/gi
str= " 1em ";
alert("'" + str.match(re) + "'");


P. S. Кстати, не уверен, что с точки зрения спецификации указание единиц измерения регистронезависимо. Возможно, флаг i нужно убрать.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 24.04.2012 в 18:04.
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2012, 18:19
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

А можешь пояснить, что значит \b и чем отличается от [\s^$]. (Справочник читал, но не понял). И ещё по поводу \d*?. Разве могут быть единицы измерения без цифр? А вот без самих обозначений (ну px и т.п.) могут. Что я не понимаю?
re=/\b\d*?(?:px|em|%|mm|cm|pt|pc|ex)\b/gi
str= " 1 ";
alert("'" + str.match(re) + "'");

str = ' px'
alert("'" + str.match(re) + "'");//странновато как-то


Сообщение от trikadin
Кстати, не уверен, что с точки зрения спецификации указание единиц измерения регистронезависимо.
Да я тоже не уверен

Последний раз редактировалось Раед, 24.04.2012 в 18:46.
Ответить с цитированием
  #10 (permalink)  
Старый 24.04.2012, 18:36
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Сообщение от trikadin Посмотреть сообщение
9xakep, не понял вашего примера. Как это вообще связано?))
Воспоминания из дества))
__________________
оляля, ололо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java-скрипт для поиска. 2oo Общие вопросы Javascript 25 11.12.2010 13:10
Подбор по параметрам для поиска в каталоге товаров(интерестная версия) dmi3y Ваши сайты и скрипты 5 25.12.2009 13:55
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12