Регулярное выражение для url'ов

458
23 июня 2017, 10:32

Есть регулярка для урлов:

(https?:\/\/)?(www\.)?[-a-zA-Zа-яА-ЯёЁ0-9@:%._\+~#=]{2,256}(\.)[a-zа-яё]{1,4}(\:[0-9]+)?(\/?[-a-zA-Z0-9@:%_\+~#]+(\.[a-z0-9]+)?)+(\?[-a-zA-Z0-9@:%._\+~#]+(=[-a-zA-Z0-9@:%._\+~#]+)?((\&[-a-zA-Z0-9@:%._\+~#]+(=[-a-zA-Z0-9@:%._\+~#]+)?)+)?)?

но почему-то не работает для русских доменов (пример.рф например). Причем, пример.ru работает, то есть регулярка не работает для русских доменов верхнего уровня. Подскажите пожалуйста, в чем ошибка.

Ссылка с регуляркой и примерами

Answer 1

В приведённой выше регулярке можно добавить диапазон русских букв везде, где предположительно будут буквы, т.е. рядом с латинницей a-z добавить а-яё.

/(https?:\/\/)?(www\.)?[-a-zа-яё0-9@:%._\+~#=]{2,256}\.[a-zа-яё]{1,4}(?::[0-9]+)?(\/?[-a-zа-яё0-9@:%_\+~#]+(\.[a-zа-яё0-9]+)?)+(\?[-а-яёa-z0-9@:%._\+~#]+(=[-a-zа-яё0-9@:%._\+~#]+)?((\&[-a-zа-яё0-9@:%._\+~#]+(=[-a-zа-яё0-9@:%._\+~#]+)?)+)?)?/gi

См. демо

Можно добавить модификатор /i, тогда не нужно указывать буквы в обоих регистрах.

READ ALSO
Взаимодействие компонентов в React

Взаимодействие компонентов в React

Есть форма (в ней input и button), есть div(компонент Posts) внизу нее, где должны отображаться элементы, которые будут добавляться при нажатии на кнопку

478
ProgressBar на чистом JavaScript

ProgressBar на чистом JavaScript

Задача: При загрузке страницы плавное увеличение прогрессбара до нужного значения + вывод этого значения в процентахСмог сделать для одного...

376
В чем ошибка (перевод в римское счисление)?

В чем ошибка (перевод в римское счисление)?

Как считаете, почему я получаю значение "undefined", а не римское число? Может, грубая ошибка?

319
Сесии и авторизация node js

Сесии и авторизация node js

Есть ли возможность сделать авторизацию и сессии на чистом node js без использования express?

602