Javascript正则表达式匹配

时间:2010-03-30 08:44:37

标签: javascript jquery regex

通过使用here中的模式,我想在用户填写#id_phone文本输入字段时检查,如果它与模式匹配,请使用#id_phone的值来填充#id_new_phone的值。 这对我来说似乎不起作用。

$('#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);
    }
});

可能是什么问题?

2 个答案:

答案 0 :(得分: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会返回一个您并不真正需要的数组。

答案 1 :(得分:3)

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

使用RegExp();

时应该引用模式

此外,它不是有效的正则表达式,因为如果您不想引用它,则应使用regexp构造。 E.g:

var myregex = /<some pattern here>/g