2012-01-12 37 views
10

Estoy tratando de hacer coincidir un dominio simple: example.comRegex para que coincida con el dominio simple

Pero todas las combinaciones de la misma.

¿Cómo voy a hacer esto para cubrir:

 
https://example.com 
http://www.example.com 
etc. 
+0

¿Tiene que usar una sola expresión regular? Usar un analizador de URL existente y luego mirar las partes individualmente sería menos propenso a errores. –

+0

@muistooshort originalmente tenía '/^https?: \/\ /.*? \.? Facebook \ .com \ //' pero pensé que podría no funcionar en todos los casos? – Andy

+0

Eso dejaría pasar algunas URL inválidas (como 'http: // a_b.facebook.com /') pero eso podría no ser un problema. –

Respuesta

5
^https?://([\w\d]+\.)?example\.com$ 

mediante código:

var result = /^https?:\/\/([a-zA-Z\d-]+\.){0,}example\.com$/.test('https://example.com'); 
// result is either true of false 

he mejorado para que coincida como "http://abexample.com"

+0

Es posible que desee ajustar esa clase de caracteres. No todos los '\ w' son válidos en un nombre de dominio (' _' en particular) y los guiones * son * permitidos. –

+0

@itea - gracias - pero ¿puedes agregar escapes de JavaScript para mí? – Andy

+0

@muistooshort Gracias. – itea

3

Probablemente pueda usar para hacer coincidir el nombre de dominio con la parte de una URL:

/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com$/ 

que coincidirá con cualquiera de las siguientes cadenas:

https://example.com 
http://www.example.com 
http://example.com 
https://example.com 
www.example.com 
example.com 

ACTUALIZACIÓN: para que coincida con el uso URL completa (no sólo de dominio parte del nombre):

/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com(?:/.*)?$/ 
+0

muchas gracias, pero parece que no funciona? ver http://jsfiddle.net/v4WVU/ – Andy

+0

Realmente funciona, mira allí: http://jsfiddle.net/v4WVU/3/ Intentabas hacer coincidir 'location.href' que era' http: // fiddle. jshell.net/_display/'. Como escribí anteriormente RegEx es para hacer coincidir nombre de dominio no completo URL. – anubhava

4

Un ejemplo más genérico Solía :

/http(?:s)?:\/\/(?:[\w-]+\.)*([\w-]{1,63})(?:\.(?:\w{3}|\w{2}))(?:$|\/)/i 

Tenga en cuenta que esta solución no ' t recoge la etiqueta correcta para TLD de 5 caracteres. Ejemplo:

http://mylabel.co.uk 

sería recogido como 'co' en lugar de 'mylabel', pero

http://mylabel.co 

se corresponde correctamente como 'mylabel'. La expresión regular fue lo suficientemente buena para mí, incluso con esta limitación.

Tenga en cuenta que el límite de 63 caracteres para la etiqueta es una especificación RFC. Espero que esto ayude a cualquiera que busque la misma respuesta en el futuro.

Cuestiones relacionadas