#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:
В ваших [^___]
блоках вы случайно включаете < и&&t;, которые не являются безопасными символами URL. Если вы измените свое регулярное выражение, чтобы разрешить использование только безопасных символов URL (или явно исключить <), то это должно исправить.
Комментарии:
1. Это не мое собственное регулярное выражение, созданное с 0, поэтому я не настолько эксперт в этом регулярном выражении.. Не могли бы вы точно указать, где находится блок
2. Везде, где вы видите квадратные скобки с кареткой внутри, например [^s], это означает соответствие любому символу, которого нет внутри этого набора. Если вы также поместите < и &&t; в эти квадратные скобки, они тоже будут исключены. В случае [^s] это будет выглядеть как [^s<&&t;]. Похоже, что это происходит в 4 местах вашего шаблона.