Надеюсь, вы знаете, что использовать регулярные выражения для проверки URL нелегко, поскольку существует множество допустимых вариантов URL. Смотрите, например, этот вопрос .
Во-первых, у вашего регулярного выражения есть несколько недостатков (это только после быстрой проверки, возможно, не полной)
См. здесь для онлайн-проверки Regexr
Не соответствует
http://RegExr.com? 2rjl6]
Почему вы разрешаете только \w
и -
после первой точки?
но оно соответствует
hhhhhhppth ?????? ХТ: //stackoverflow.com
Вы определяете группу символов в начале [http(s)?://]
, что означает совпадение с любым из символов внутри (Вы, вероятно, хотите (?:http(s)?://)
и ?
после вардов вместо *
.
Чтобы ответить на ваш вопрос:
Создайте группу символов с этими буквами и разместите ее там, где вы хотите, чтобы она была разрешена.
[äÄÉéöÖüÜß]
Используйте это так
(?:https?://)?([äÄÉéöÖüÜß\w-]+\.)+[äÄÉéöÖüÜß\w-]+(/[-äÄÉéöÖüÜß\w ./?%&=]*)?
Другие подсказки
-
внутри группы символов должно быть в начале или в конце или должно быть экранировано.
(s)?
is s?