2010-09-25 6 views
6

si hago esto:Javascript Regex: Cómo llegar `1` y no` 11`

var string = "7,11,2" 
var check = string.match("/1/"); 

if(check != null){ 
    doSomething(); 
} else { 
    doSomethingElse(); 
} 

Entonces check no es nullmatch porque ha encontrado 1 en 11. Entonces, ¿cómo debo evitar esto y obtener 1 cuando realmente aparece?

Respuesta

6

Eso está sucediendo porque coincide con 1 en 11 y lo llama una coincidencia. Usted tiene que asegurarse de que no hay otro número que sigue al 1. Probar:

var check = string.match("/(^|\D)1(\D|$)/"); 

Esto buscará una forma rodeada de caracteres que no sean dígitos, o el inicio/final de la cadena (el ^ y $ anclajes).

+0

Muchas gracias, funciona perfectamente !! ¡Aceptaré tu respuesta tan pronto como pueda! – Adam

+0

@zolex Muestra por favor qué entrada rompería la expresión regular – NullUserException

+0

esta expresión regular solo funciona para este caso especial. ver mi respuesta ascendente para una expresión regular para comprobar si un valor se encuentra en una lista separada de alguna manera ... –

2

Otra forma sería lo rodean con palabras anclas de contorno: /\b1\b/ sólo igualará un 1 si no está rodeado por otros números, letras o subrayado. Entonces funcionaría en tu caso (y es un poco más legible).

Sin embargo, fallará en casos como ID1OT. Si desea extraer el 1 desde allí, solo podría hacerlo con el método de @ NullUserException.

Cuestiones relacionadas