2012-02-23 2 views
0

Это мой код, но по какой-то причине он не работает, кто-нибудь понял ключ?RegExp string.match не работает

var val="My1name" 
var exp = new RegExp("((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})"); 
if(!val.match(exp)){  
    alert("No match") 
} else { 
    alert("Match") 
} 
+1

Используйте литеральную грамматику для создания регулярных выражений, если они будут постоянными. 'var exp =/((? =. * \ d) (? =. * [az]) (? =. * [AZ]). {6,20}) /' –

+0

утра, я не прав, вы нам нужно избегать некоторых персонажей. Но если вам не нужен новый RegExp (...), почему бы не использовать /.../ вместо этого? – mfeineis

+0

** Что означает «не работает»? ** «Не работает» - это неадекватное описание для понимания проблемы. Что случилось, когда вы попробовали? Получили ли вы неправильные результаты? Вы получили * нет * результаты? Если результаты были неверными, что сделало их неправильными? Что вы ожидали вместо этого? Вы получили * любые * правильные результаты? Если да, то каковы они? Не заставляй нас гадать. –

ответ

2

Вы должны избежать спецсимволов при построении из строки ...

var exp = new RegExp("((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})"); 
//-------------------------^ 
0

Вы пытаетесь это сделать?

var val = "My1name"; 
var exp = /((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})/; 
if(!val.match(exp)){  
    alert("No match"); 
} else { 
    alert("Match"); 
}