2010-03-30 110 views
1

通过使用here中的模式,我想检查用户是否填充#id_phone文本输入字段,如果它匹配该模式,请使用#id_phone的值填充#id_new_phone的值。 这似乎不适用于我。Javascript正则表达式匹配

$('#id_phone').change(function() { 
    var myPattern = new RegExp(^0\(5\d{2}\) \d{3} \d{2} \d{2}$); 
    var myStr = $("#id_phone").val(); 
    if (myStr.match(myPattern)){ 
     $('#id_new_phone').val(myStr); 
    } 
}); 

可能是什么问题?

+1

您试图匹配的数据的一个示例将对诊断问题非常有用。 – zellio 2010-03-30 08:47:06

回答

3
var myPattern = new RegExp("^0\(5\d{2}\) \d{3} \d{2} \d{2}$"); 

在使用RegExp()时应引用模式;

另外它不是一个有效的正则表达式,因为如果你不想引用它,你应该使用regexp构造。例如:

var myregex = /<some pattern here>/g 
6

你需要把(^0\(5\d{2}\) \d{3} \d{2} \d{2}$)引号中,也需要转义反斜杠,如果你将要使用RegExp,而不是/ /

"^0\\(5\\d{2}\\) \\d{3} \\d{2} \\d{2}$" 

而且myPattern.test(myStr)比使用.match更理想,因为.match会返回一个您不需要的数组。