PHP Regex preg_match Проверка электронной почты

1
$email = '[email protected]';
if(preg_match(\w+(@business.com)\z), $email){code goes here}

Я пытаюсь выполнить код в разделе "код идет здесь" этого условия, когда $ email содержит адрес электронной почты, который заканчивается именно на @business.com.

Я чувствую, что я, возможно, неправильно понимаю, как работает preg_match, но я не могу найти никакой информации о том, почему оператор if оценивает как false.

Есть много, много примеров и других людей, имеющих схожие проблемы, но решение их проблем не вызывает каких-либо проблем с моим кодом.

Я работал над этим примером:

http://php.net/manual/en/function.preg-match.php

<?php
// The "i" after the pattern delimiter indicates a case-insensitive search
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}
?>
  • 0
    Есть ли у вас сообщения об ошибках? preg_match(\w+(@business.com)\z) имеет по крайней мере две проблемы. 1. без кавычек вокруг регулярных выражений, 2. без разделителей.
  • 1
    @chris85 chris85, так как здесь нет необходимости использовать регулярные выражения
Теги:

1 ответ

1
Лучший ответ

Нет необходимости использовать regex вы можете просто использовать функцию strstr для PHP, например:

if(strstr('[email protected]',"@") == "@business.com"){
  // code goes here
}

или для использования регулярного выражения вы можете просто использовать Positive Lookbehind, например, как

if(preg_match('~(?<=\w)(@business.com)~',$string)!==false){
    // code goes here
}

демонстрация

Ещё вопросы

Сообщество Overcoder
Наверх
Меню