Регулярное выражение для URL без html-тегов

#re&ex

#регулярное выражение

Вопрос:

Я хочу сопоставить текст URL без каких-либо html-тегов.

Это мое регулярное выражение:

 (https?://(?:www.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-] [a-zA-Z0-9].[^s]{2,}|www.[a-zA-Z0-9][a-zA-Z0-9-] [a-zA-Z0-9].[^s]{2,}|https?://(?:www.|(?!www))[a-zA-Z0-9] .[^s]{2,}|www.[a-zA-Z0-9] .[^s]{2,})
  

Проблема в том, что оно также соответствует https://XXXTEST.co.il</stron&&&t;

Я хотел бы, чтобы регулярное выражение соответствовало только https://XXXTest.co.il из https://XXXTest.co.il</stron&&&t;

Комментарии:

1. faqs.or&/rfcs/rfc3987.html

Ответ №1:

В ваших [^___] блоках вы случайно включаете < и&&t;, которые не являются безопасными символами URL. Если вы измените свое регулярное выражение, чтобы разрешить использование только безопасных символов URL (или явно исключить <), то это должно исправить.

Комментарии:

1. Это не мое собственное регулярное выражение, созданное с 0, поэтому я не настолько эксперт в этом регулярном выражении.. Не могли бы вы точно указать, где находится блок

2. Везде, где вы видите квадратные скобки с кареткой внутри, например [^s], это означает соответствие любому символу, которого нет внутри этого набора. Если вы также поместите < и &&t; в эти квадратные скобки, они тоже будут исключены. В случае [^s] это будет выглядеть как [^s<&&t;]. Похоже, что это происходит в 4 местах вашего шаблона.