Соответствие регулярных выражений Javascript - PullRequest
1 голос
/ 30 марта 2010

Используя шаблон из здесь , я хочу проверить, когда пользователь заполняет поле ввода текста #id_phone, если он соответствует шаблону, используйте значение #id_phone для заполнения # id_new_phone's значение. Кажется, это не работает для меня.

$('#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 ]

6 голосов
/ 30 марта 2010

Вам нужно поместить (^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 возвращает массив, который вам на самом деле не нужен.

3 голосов
/ 30 марта 2010
var myPattern = new RegExp("^0\(5\d{2}\) \d{3} \d{2} \d{2}$");

Вы должны заключать шаблон в кавычки при использовании RegExp ();

Также это недопустимое регулярное выражение, потому что если вы не хотите заключать его в кавычки, вам следует использовать конструкцию регулярного выражения. E.g.:

var myregex = /<some pattern here>/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...