Necesito verificar la URL ingresada en una página y aún coincide con la cadena http:// solamente. Quiero que falle si el usuario solo ingresa http://
Patrón de expresión regular ^(https?:\/\/)(www\.)?(([a-zA-Z]+)?(\.[a-zA-z]{2,6})?)((\d{1,3}\.){3}(\d{1,3}){1})?$/gm
pruebas:
google.com <---- fails as it should https://google.com <---- Pass https:google.com <---- fails as it should www.cool.com.au <---- fails as it should https://asdsds.Com http://a <---- Pass https:// <---- Pass **BUT SHOULD FAIL** http://10.10.10.00 <---- Pass http://www.cool.com <---- Pass https://123123.asd <---- fails as it should http://www.cool.com.au/ersdfs <---- fails as it should http://www.cool.com.au/ersdfs?dfd=dfgd@s=1 <---- fails as it should http://www.cool.com:81/index.html <---- fails as it should
El punto principal aquí es agregar (?!$)
después de ^(https?:\/\/)
, fallará la coincidencia si hay un final de cadena/línea inmediatamente después de la parte del protocolo.
Puedes usar
^(?:https?:\/\/)(?!$)(?:www\.)?[a-zA-Z]*(?:\.[a-zA-Z]{2,6})?(?:(?:\d{1,3}\.){3}\d{1,3})?$
Vea la demostración de expresiones regulares .
Tenga en cuenta que {1}
es redundante y debe eliminarse. [a-zA-z]
(que no coincide solo con letras) es probablemente un error tipográfico, debe haber querido decir [a-zA-Z]
.
Eliminé los grupos de captura innecesarios y convertí los de captura en no captura para obtener una estructura de coincidencia de expresiones regulares más limpia, solo use el mecanismo de captura cuando necesite obtener las partes de coincidencia.