2011-06-17 9 views
13

En primer lugar, aquí es mi fragmento de código:Javascript expresiones regulares de verificación si se aplican

var str = '<!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->'; 
var match = str.match(/de-->([^<]+).+?en[^>]+>([^<]+)/i); 
var textInDe = match[1]; 
var textInEn = match[2]; 

Tengo esta validación de expresiones regulares (gracias a la máscara), que funciona muy bien.

Ahora, quiero comprobar con una sentencia if si esta expresión regular aplica a un trozo de cuerda o no. Estoy usando JavaScript jquery.

Gracias de antemano :)

Respuesta

40

Le ofrecemos RegExp.test

if(/de-->([^<]+).+?en[^>]+>([^<]+)/i.test(str)) { 
    // something 
} 
+0

hm realmente no sé cómo debería funcionar ?! cómo se vería en una declaración if? if (... == cierto) o qué? –

+0

Actualizado mi respuesta. – Dogbert

+1

@ YeppThat'sMe No necesita tener '== verdadero' en una instrucción if, literalmente, nunca. Tal vez '=== verdadero', pero definitivamente no es el otro –

3
var str = '<!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->'; 
var match = str.match(/de-->([^<]+).+?en[^>]+>([^<]+)/i); 
if(match.length > 0){ 
//successful match 
} 

O

var re = new RegExp('regex string'); 
    if (somestring.match(re)) { 
//successful match 
} 
+1

Si no hay coincidencias,' match' es 'null', lo que significa que no puedes hacer' match.length'. Si cambia la instrucción if 'if (match) {...' entonces funcionará. –

3

¿Qué tal esto?

function IsMatch(v) { 
    //basically build your regex here 
    var exp = new RegExp("^de-->([^<]+).+?en[^>]+>([^<]+)$"); return exp.test(v); 
} 

To call it: 
if(IsMatch('Your string')) alert('Found'); else alert('Not Found'); 
Cuestiones relacionadas