>var neighbor = /neighbou?r/;
>console.log(neighbor.test("neighbour"));
>// → true
>console.log(neighbor.test("neighbor"));
>// → true
Чтобы задать точное количество раз, которое шаблон должен встретиться, используются фигурные скобки. >{4}
после элемента означает, что он должен встретиться в строке 4 раза. Также можно задать промежуток: >{2,4}
означает, что элемент должен встретиться не менее 2 и не более 4 раз.
Ещё одна версия формата даты и времени, где разрешены дни, месяцы и часы из одной или двух цифр. И ещё она чуть более читаема.
>var dateTime = /\d{1,2}-\d{1,2}-\d{4} \d{1,2}:\d{2}/;
>console.log(dateTime.test("30-1-2003 8:45"));
>// → true
Можно использовать промежутки с открытым концом, опуская одно из чисел. >{,5}
означает, что шаблон может встретиться от нуля до пяти раз, а >{5,}
– от пяти и более.
Чтобы использовать операторы >*
или >+
на нескольких элементах сразу, можно использовать круглые скобки. Часть регулярки, заключённая в скобки, считается одним элементом с точки зрения операторов.
>var cartoonCrying = /boo+(hoo+)+/i;
>console.log(cartoonCrying.test("Boohoooohoohooo"));
>// → true
Первый и второй плюсы относятся только ко вторым буквам >o
в словах >boo
и >hoo
. Третий >+
относится к целой группе (>hoo+
), находя одну или несколько таких последовательностей.
Буква >i
в конце выражения делает регулярку нечувствительной к регистру символов – так, что >B
совпадает с >b
.
Метод >test
– самый простой метод проверки регулярок. Он только сообщает, было ли найдено совпадение, или нет. У регулярок есть ещё метод >exec
, который вернёт >null
, если ничего не было найдено, а в противном случае вернёт объект с информацией о совпадении.
>var match = /\d+/.exec("one two 100");
>console.log(match);
>// → ["100"]
>console.log(match.index);
>// → 8
У возвращаемого >exec
объекта есть свойство >index
, где содержится номер символа, с которого случилось совпадение. А вообще объект выглядит как массив строк, где первый элемент – строка, которую проверяли на совпадение. В нашем примере это будет последовательность цифр, которую мы искали.
У строк есть метод >match
, работающий примерно так же.
>console.log("one two 100".match(/\d+/));
>// → ["100"]
Когда в регулярке содержатся подвыражения, сгруппированные круглыми скобками, текст, совпавший с этими группами, тоже появится в массиве. Первый элемент всегда совпадение целиком. Второй – часть, совпавшая с первой группой (той, у кого круглые скобки встретились раньше всех), затем со второй группой, и так далее.
>var quotedText = /'([^']*)'/;