2011-01-04 20 views
18

Jestem pewien, że jest to coś bardzo małego, czego mi brakuje, ale nie byłem w stanie tego rozgryźć.Wyrażenie regularne JavaScript - ciąg znaków do obiektu RegEx

mam zmienną JavaScript ze wzoru regex w nim, ale nie może wydaje się być w stanie zrobić to praca z klasą RegEx

następujących zawsze wartość false:

var value = "[email protected]"; 
var pattern = "^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$" 
var re = new RegExp(pattern); 
re.test(value); 

ale jeśli i zmienić go w prawidłowej ekspresji regex (usuwając cytaty i dodanie / na początku i na końcu wzorca), zaczyna pracę:

var value = "[email protected]"; 
var pattern = /^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$/ 
var re = new RegExp(pattern); 
re.test(value); 

ponieważ zawsze otrzymuję wzorzec jako ciąg w zmiennej, nie byłem w stanie dowiedzieć się, czego tu brakuje.

Odpowiedz

24

backslashes jest specjalne ciągi znaków, które muszą być uciekł z inną backslashem:

var value = "[email protected]"; 
var pattern = "^\\[email protected][a-zA-Z_]+?\\.[a-zA-Z]{2,3}$" 
var re = new RegExp(pattern); 
re.test(value); 
+0

omg wiedziałem, że to coś całkiem proste, że mi brakuje. Dzięki!! – shake

Powiązane problemy