#javascript #jquery #phpjs
#javascript #jquery #phpjs
Вопрос:
Могу ли я использовать preg_match для проверки номера телефона в jQuery? Вот мой код, который не работает:
if (!preg_match("/^[0-9]{3}-|s[0-9]{3}-|s[0-9]{4}$/", phone.val() )) {
phone.addClass("needsfilled");
phone.val(phonerror);
}
HTML
<input id="phone" type="text" value="" name="phone" />
Комментарии:
1.
preg_match
это функция PHP, а не функция JavaScript, следовательно, вы не можете ее использовать. Вы должны взглянуть сюда: developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
Ответ №1:
Javascript включает механизм регулярных выражений, доступ к которому осуществляется через функции string.match()
, string.replace()
и string.split()
.
Например:
var mystring = "this is a sentence";
mystring = mystring.replace(/sentence/,'string');
var matches = mystring.match(/bw b/);
Это должно предоставить вам по существу ту же функциональность, что и preg_match()
.
Итак, чтобы выполнить ту же проверку, что и preg_match в вашем вопросе:
if(!phone.val().match(/^[0-9]{3}-|s[0-9]{3}-|s[0-9]{4}$/)) {
phone.addClass("needsfilled");
phone.val(phonerror);
}
Если вы абсолютно настаиваете на том, чтобы вызывалась функция, preg_match()
которая работает точно так же, как версия PHP, есть проект под названием PHPJS, целью которого является реализация функций PHP в Javascript. Беглый взгляд на их сайт показывает, что, хотя в настоящее время у них нет полностью рабочей preg_match()
реализации, у них есть незавершенная реализация, на которую вы, возможно, захотите взглянуть. Но, честно говоря, встроенной в Javascript .match()
функции должно быть более чем достаточно.
Комментарии:
1. с помощью этого кода, если я ввожу какой-либо неправильный номер телефона или и номер, и текст, я не получаю никакого сообщения об ошибке, чего я не хочу
2. @Mary — Я не ставил
!
перед выражением, поэтому оно попадало вif()
, когда выражение совпадало, а не когда не совпадало. Но это было задумано как пример кода о том, как использовать.match()
функцию, а не как полное решение для копирования и вставки. Но я отредактировал ответ, чтобы он был ближе к тому, что вы хотите сделать.3. @Mary — кстати, чтобы вы знали, регулярное выражение вашего телефонного номера не будет доступно никому за пределами США. Не уверен, для чего используется ваш сайт, но если вы ожидаете каких-либо иностранных пользователей, вам нужно будет сделать ваше регулярное выражение намного более мягким.
Ответ №2:
Чтобы использовать функцию PHP, вам нужно будет отправить HTTP-запрос на сервер (с любыми данными, которые вы хотите протестировать), а затем проанализировать ответ.
Лучше использовать встроенную функциональность регулярных выражений в JavaScript.
Ответ №3:
RegExp.exec(string)
будет работать.
попробуйте это:
var pattern= "/your pattern/";
var result = pattern.exec ( $("#phone").val() );
// true if match
Ответ №4:
Вместо использования preg_match
, которое является функцией PHP, вам следует использовать match
функцию объекта String. Смотрите Документы Mozilla для получения информации об использовании функции сопоставления.