Подскажите как правильно составить регулярное выражение для проверки строи которая может содержать только цифры и возможны(но не обязательны) символы pipe (турба) "|" пробовал так:
$an = '1|2|02932';
if (preg_match("/^0-9\|/",$an) == 0) { echo 1; }
if (preg_match("/^0-9|/",$an) == 0) { echo 1; }
if (preg_match("/^0-9 |/",$an) == 0) { echo 1; }
if (preg_match("/^0-9 ?|/",$an) == 0) { echo 1; }
ни чего из этого не работает нормально, по моему этот символ забронирован как некое значение типа OR но почему то он не экранируется символом \ что я делаю не так?
^[0-9]+\|
- вернет истину, если строка начинается с одной или более цифр за которыми следует символ |
.
Чтобы убедиться, что строка состоит только из цифр и символов, (порядок не важен) подойдет такое выражение:
^[0-9\|]+$
Оно вернет истину, если строка от начала до конца будет содержать один или более символов из группы в квадратных скобках.
Если вы хотите проверить, состоит ли строка из одних только чисел, разделенных символом |
, используйте
if (preg_match('~^\d+(?:\|\d+)*\z~', $an)) {
echo 1;
}
Или, если числа могут быть дробными:
if (preg_match('~^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:\|(?1))*\z~', $an)) {
echo 1;
}
См. демо выражения №1 и демо выражения №2.
Подробности
^
- начало строки\d+
- 1+ цифр (?:\|\d+)*
- 0 и более повторов последовательности |
и 1+ цифр\z
- абсолютный конец строки (сразу после не должно быть ничего, даже финального \n
, $
этого не обеспечивает).Во втором шаблоне вместо \d+
использован шаблон ([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)
для нахождения дробного или целого числа, а (?1)
повторяет этот шаблон (чтобы не писать одно и то же):
[-+]?
- необязательный символ -
или +
\d*
- 0 и более цифр\.?
- необязательный символ .
\d+
- 1 и более цифр(?:[eE][-+]?\d+)?
- буква e
или E
, затем необязательный символ +
или -
, а потом 1 и более цифр.Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не удается задать правильный путь к файлу file(/home/c/cd09875/lenia/public_html/site/sentences/feasibletxt): failed to open stream: No such file or directory in /home/c/cd09875/lenia/public_html/site/main_page