Регулярные выражения в JavaScript

Продолжая тему регулярных выражений (см. mtaalamu.ru/blog/coding/1083.html, mtaalamu.ru/blog/coding/1083.html), несколько слов хотелось бы сказать о том, как они используются в популярнейшем языке программирования клиентских приложений. На JavaScript я программирую довольно редки и не много, т.к. GWT, на котором я разрабатываю веб-странички, позволяет обходиться без него. Но на днях потребовалось решить такую задачу.

В текстовое поле вводится строка для поиска (поиск карточки пациента поликлиники в базе данных). Строка может быть 5-значным числом, специальным идентификатором (три буквы + две цифры) либо фрагментом слова кириллицей. Требуется отфильтровать ввод в это поле, чтобы формой обрабатывался только введенный текст, соответствующий одному из этих условий, а в остальных случаях выводилось сообщение об ошибке.

Тот самый случай, когда «фильтровать базар» лучше всего именно рекэкспами. Однако приложение я, как всегда, стал писать на GWT, а в нем нет непосредственной поддержки регулярных выражений (а может и есть, но так глубоко закопана, что я об этом не знаю). Зато, как подсказал всемогущий Google, непосредственная поддержка регэкспов есть в стандартном JavaScript. С некоторых пор там предусмотрен специальный объект — RegExp, которым можно пользоваться примерно так:

var rgxp = new RegExp("^\\d+$");
var num = "12345";
alert(rgxp.test(num));

Но это еще не всё. Как видно из примера, слэши и некоторые другие спецсимволы в строках Java(Script) требуют экранирования. Чтобы сделать этот жуткий лес из палок прозрачнее, в JS придумали более эффективную форму записи регэкспов, заключая их не в кавычки, а в косые черточки. Вот, например, как в этой форме выглядит решение вышесформулированной задачи:

var digits = /^\d{5}$/;	// только цифры				  
  var id5ch  = /^[\u0400-\u04FF]{3}\d{2}$/;	// три кириллических буквы, две цифры				  
  var plain  = /^[\u0400-\u04FF]{3,}$/;		// только кириллические буквы			  
  return digits.test(s) || id5ch.test(s) || plain.test(s);


Очень удобно, мне понравилось. Поскольку GWT поддерживает native-методы, написанные непосредственно на JS, я легко интегрировал этот код в свое приложение.
  • +4
  • 21 августа 2010, 11:30
  • yababay

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.