solo regulares regular que probar palabra online numeros mayores letras expresiones expresion exacta espacios espacio direccion crear casa blanco alfanumerico javascript regex

javascript - regulares - ¿Qué es una buena expresión regular para hacer coincidir una URL?



expresiones regulares javascript (6)

Estaba tratando de juntar algo de JavaScript para validar un nombre de dominio (por ejemplo, google.com) y si valida habilitar un botón de envío. Pensé que compartiría mi código para aquellos que buscan lograr algo similar. Espera un dominio sin http: // o www. valor. La secuencia de comandos utiliza una expresión regular reducida de arriba para la coincidencia de dominios, que no es estricta con el TLD falso.

http://jsfiddle.net/nMVDS/1/

$(function () { $(''#whitelist_add'').keyup(function () { if ($(this).val() == '''') { //Check to see if there is any text entered //If there is no text within the input, disable the button $(''.whitelistCheck'').attr(''disabled'', ''disabled''); } else { // Domain name regular expression var regex = new RegExp("^([0-9A-Za-z-//.@:%_/+~#=]+)+((//.[a-zA-Z]{2,3})+)(/(.)*)?(//?(.)*)?"); if (regex.test($(this).val())) { // Domain looks OK //alert("Successful match"); $(''.whitelistCheck'').removeAttr(''disabled''); } else { // Domain is NOT OK //alert("No match"); $(''.whitelistCheck'').attr(''disabled'', ''disabled''); } } }); });

FORMULARIO HTML:

<form action="domain_management.php" method="get"> <input type="text" name="whitelist_add" id="whitelist_add" placeholder="domain.com"> <button type="submit" class="btn btn-success whitelistCheck" disabled=''disabled''>Add to Whitelist</button> </form>

Esta pregunta ya tiene una respuesta aquí:

Actualmente tengo un cuadro de entrada que detectará la URL y analizará los datos.

Así que ahora mismo estoy usando:

var urlR = /^(?:([A-Za-z]+):)?(//{0,3})([0-9./-A-Za-z]+) (?::(/d+))?(?://([^?#]*))?(?:/?([^#]*))?(?:#(.*))?$/; var url= content.match(urlR);

El problema es que cuando ingreso una URL como www.google.com , no funciona. cuando entré en http://www.google.com , está funcionando.

No soy muy fluido en las expresiones regulares. ¿Alguien puede ayudarme?


Estos son los droides que estás buscando. Esto se toma de validator.js que es la biblioteca que realmente debería usar para hacer esto. Pero si quieres rodar el tuyo, ¿quién soy yo para detenerte? Si desea un regex puro, simplemente puede retirar la verificación de longitud. Creo que es una buena idea probar la longitud de la URL, si realmente quieres determinar el cumplimiento de la especificación.

function isURL(str) { var urlRegex = ''^(?!mailto:)(?:(?:http|https|ftp)://)(?://S+(?:://S*)?@)?(?:(?:(?:[1-9]//d?|1//d//d|2[01]//d|22[0-3])(?://.(?:1?//d{1,2}|2[0-4]//d|25[0-5])){2}(?://.(?:[0-9]//d?|1//d//d|2[0-4]//d|25[0-4]))|(?:(?:[a-z//u00a1-//uffff0-9]+-?)*[a-z//u00a1-//uffff0-9]+)(?://.(?:[a-z//u00a1-//uffff0-9]+-?)*[a-z//u00a1-//uffff0-9]+)*(?://.(?:[a-z//u00a1-//uffff]{2,})))|localhost)(?:://d{2,5})?(?:(/|//?|#)[^//s]*)?$''; var url = new RegExp(urlRegex, ''i''); return str.length < 2083 && url.test(str); }


Otra solución posible, la solución anterior, falló para mí al analizar los parámetros de cadena de consulta.

var regex = new RegExp("^(http[s]?://////(www//.)?|ftp://////(www//.)?|www//.){1}([0-9A-Za-z-//.@:%_/+~#=]+)+((//.[a-zA-Z]{2,3})+)(/(.)*)?(//?(.)*)?"); if(regex.test("http://google.com")){ alert("Successful match"); }else{ alert("No match"); }

En esta solución, siéntase libre de modificar [-0-9A-Za-z/.@:%_/+~#= , Para que coincida con el nombre de dominio / subdominio. En esta solución, los parámetros de cadena de consulta también se tienen en cuenta.

Si no está utilizando RegEx , a partir de la expresión reemplace // por / .

Espero que esto ayude.


Regex si desea asegurarse de que la URL comience con HTTP / HTTPS:

https?:////(www/.)?[-a-zA-Z0-9@:%._/+~#=]{2,256}/.[a-z]{2,6}/b([-a-zA-Z0-9@:%_/+.~#?&//=]*)

Si no requiere protocolo HTTP:

[-a-zA-Z0-9@:%._/+~#=]{2,256}/.[a-z]{2,6}/b([-a-zA-Z0-9@:%_/+.~#?&//=]*)

Para probar esto, visite http://regexr.com?37i6s , o para una versión que sea menos restrictiva http://regexr.com/3e6m0 .

Ejemplo de implementación de JavaScript:

var expression = /[-a-zA-Z0-9@:%_/+.~#?&//=]{2,256}/.[a-z]{2,4}/b(//[-a-zA-Z0-9@:%_/+.~#?&//=]*)?/gi; var regex = new RegExp(expression); var t = ''www.google.com''; if (t.match(regex)) { alert("Successful match"); } else { alert("No match"); }


prueba esto

(ftp|http|https):////(/w+:{0,1}/w*@)?(/S+)(:[0-9]+)?(//|//([/w#!:.?+=&%@!/-//]))?


(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,})

Coincidirá con los siguientes casos

  • http://www.foufos.gr
  • https://www.foufos.gr
  • http://foufos.gr
  • http://www.foufos.gr/kino
  • http://www.t.co
  • http://t.co
  • http://werer.gr
  • www.foufos.gr
  • www.mp3.com
  • www.t.co

NO coincidirá con lo siguiente

  • www.foufos
  • http://www.foufos
  • http://foufos
  • www.mp3#.com
  • www.foufos-.gr
  • www.-foufos.gr

Compruébalo en rubular - NUEVA versión

Compruébelo en rubular - versión antigua