Я могу использовать регулярное выражение JavaScript в php, как это

Я использую регулярное выражение в 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})$/);
5
задан Shantanu Gupta 12 April 2010 в 11:18
поделиться

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!";

Наслаждайтесь!

2
ответ дан 14 December 2019 в 01:04
поделиться

Предполагается, что работает для большинства шаблонов, за исключением экранирования специальных символов и обратной косой черты, но не в обратном направлении. Регулярное выражение 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

3
ответ дан 14 December 2019 в 01:04
поделиться

В 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.
}

Вы могли бы использовать регулярное выражение напрямую в качестве аргумента функции вместо использования переменной.

1
ответ дан 14 December 2019 в 01:04
поделиться

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"));

См. здесь для сравнительной таблицы.

3
ответ дан 14 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: