2011-06-17 14 views
13

Przede wszystkim, tutaj jest mój urywek kodu:JavaScript sprawdzić, czy regex zastosować

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]; 

Mam ten walidacji regex (dzięki maska), która działa świetnie.

Teraz chcę sprawdzić z instrukcją if, czy to wyrażenie regularne dotyczy jakiegoś ciągu, czy nie. Używam jQuery Javascript.

góry dzięki :)

Odpowiedz

40

Można używać RegExp.test

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

hm tak naprawdę nie wiem jak to powinno działać ?! jak to będzie wyglądać w instrukcji if? jeśli (... == prawda) czy co? –

+0

Zaktualizowałem moją odpowiedź. – Dogbert

+1

@ YeppThat'sMe Nie musisz mieć '== true' w instrukcji if, dosłownie zawsze. Może '=== true', ale zdecydowanie nie inne –

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

LUB

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

Jeśli nie ma dopasowań,' match' ma wartość 'null', co oznacza, że ​​nie można zrobić' match.length'. Jeśli zmienisz instrukcję if 'if (match) {...}, to będzie działać. –

3

Jak na ten temat?

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'); 
Powiązane problemy