Нет последовательности точек в строке - PullRequest
0 голосов
/ 19 июня 2020

Я использовал следующее условие de validate a string param

    if (!empty($value) && !preg_match("/^[A-Za-zÀ-ÖØ-öø-ÿĀ-ž\s\'\.\-]+$/", $value, $matches)) {
        echo "KO";
    }
echo "OK";

Я бы хотел, чтобы этот REGEX не принимал строку вида: "tes .... t", "... пример"

=> то есть не принимать последовательность точек

Так что я могу сделать ?

1 Ответ

1 голос
/ 19 июня 2020

Вы можете удалить точку из класса символов и при желании повторить ее, добавив точку.

^[A-Za-zÀ-ÖØ-öø-ÿĀ-ž\s'-]+(?:\.[A-Za-zÀ-ÖØ-öø-ÿĀ-ž\s'-]+)*$

Regex demo

Другой вариант - использовать отрицательный просмотр вперед, чтобы исключить две последовательные точки.

^(?!.*\.\.)[A-Za-zÀ-ÖØ-öø-ÿĀ-ž\s'.-]+$

Шаблон действительно содержит \s, который, возможно, также может соответствовать новой строке. Если вы хотите сопоставить горизонтальные символы пробелов, вы можете изменить его на \h

Я бы предложил использовать предложение else для его проверки, чтобы всегда не отображать эхо "OK"

$value = "test..";
if (!empty($value) && !preg_match("/^(?!.*\.\.)[A-Za-zÀ-ÖØ-öø-ÿĀ-ž\s'.-]+$/", $value, $matches)) {
    echo "KO";
} else {
    echo "OK";
}

Выход

KO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...