Как я могу использовать preg_match в jQuery?

#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 — кстати, чтобы вы знали, регулярное выражение вашего телефонного номера не будет доступно никому за пределами США. Не уверен, для чего используется ваш сайт, но если вы ожидаете каких-либо иностранных пользователей, вам нужно будет сделать ваше регулярное выражение намного более мягким.

4. ссылка на функцию сопоставления javascript

Ответ №2:

Чтобы использовать функцию PHP, вам нужно будет отправить HTTP-запрос на сервер (с любыми данными, которые вы хотите протестировать), а затем проанализировать ответ.

Лучше использовать встроенную функциональность регулярных выражений в JavaScript.

Ответ №3:

RegExp.exec(string) будет работать.

попробуйте это:

 var pattern= "/your pattern/";
var result = pattern.exec ( $("#phone").val() );
// true if match
  

src:http://javascriptkit.com/javatutors/redev3.shtml

Ответ №4:

Вместо использования preg_match , которое является функцией PHP, вам следует использовать match функцию объекта String. Смотрите Документы Mozilla для получения информации об использовании функции сопоставления.