Я использую регулярное выражение в JavaScript и хочу сделать серверную проверку также с тем же регулярным выражением. Сделайте я должен изменить его для создания его совместимым, или будет это работать как есть.
Как использовать регулярное выражение PHP. Обеспечьте небольшой пример.
Заранее спасибо
Править
Для почтовой проверки
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
Для проверки Номера телефона
var pattern = new RegExp(/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/);
Вы должны использовать одну из следующих функций preg_match или preg_match_all . И, если повезет, вам не придется изменять регулярное выражение.
В регулярном выражении PHP используется классическое регулярное выражение Perl, поэтому совпадение будет выглядеть как
preg_match_all ('/ ([a -zA-Z0-9] +) / ', $ myStringToBeTested, $ results);
Дальнейшее редактирование:
$string="test@mail.com";
if(preg_match('/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/', $string))
echo "matches!";
else
echo "doesn't match!";
Наслаждайтесь!
Предполагается, что работает для большинства шаблонов, за исключением экранирования специальных символов и обратной косой черты, но не в обратном направлении. Регулярное выражение php имеет особенности, чем javascript, как выражения поиска позади.
javascript : /[a-z]+/
php : '/[a-z]+/'
Например,
var pattern = new RegExp (/ ^ \ (? (\ D {3}) \)? [-]? (\ D {3}) [-]? (\ D {4 }) $ /);
будет '/ ^ \ (? (\ D {3}) \)? [-]? (\ D {3}) [-]? (\ D {4 }) $ / '
в php
В PHP мы используем функцию preg_match .
$email_pattern = '/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i';
$phoneno_pattern = '^/\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/';
if(preg_match($email_pattern,$input_email)) {
// valid email.
}
if(preg_match($phoneno_pattern,$input_ph)) {
// valid ph num.
}
Вы могли бы использовать регулярное выражение напрямую в качестве аргумента функции вместо использования переменной.
PHP regexp основан на PCRE (Perl Compatible Regular Expression). Пример (найти цифры) :
preg_match('/^[0-9]*$/', 'my01string');
См. документацию php.
Javascript regexp немного отличается (ECMA).
var patt1 = new RegExp("e");
document.write(patt1.test("The best things in life are free"));
См. здесь для сравнительной таблицы.