通过使用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);
}
});
可能是什么问题?
答案 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