2010-03-30 111 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會返回一個您不需要的數組。