[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match
zshgm

<?php
$str="abcAAAAabc";
if(preg_match("регулярное выражение", $str)) {
echo "yes:".$str."\r\n";
} else {
echo "no:".$str."\r\n";
}
?>


Как сделать регулярное выражение которое покажет no если в строке более 2х символов [A-Z] и покажет yes если символов 0, 1 или 2.
К примеру подходят:
123A1A, 123AA, 123AZ123, Z
Не подходят:
AAA, 123AZZ, 1Z2ZZ
RockerMisha
<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

$str='строка';

if(preg_match('/^[a-zA-Z]{0,2}/',$str))
{
echo 'yes ' . $str;
}
else
{
echo 'no ' . $str;
}
?>

по идее както так
zshgm
Цитата (RockerMisha @ 26.07.2012 - 06:29)
<?php

$str='строка';

if(preg_match('/^[a-zA-Z]{0,2}/',$str))
{
echo 'yes' . $str;
}
else
{
echo 'no' . $str;
}
?>

по идее както так

не работает.. при
$str="AА2AAA";
- выдаст yes
при $str="A"; - тоже выдает yes
RockerMisha
Тю я ступил) забыл символ конца строки вот рабочий вариант


<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

$str='A';

if(preg_match('/^[a-zA-Z]{0,2}$/',$str))
{
echo 'yes ' . $str;
}
else
{
echo 'no ' . $str;
}
?>
zshgm
Цитата (RockerMisha @ 26.07.2012 - 06:48)
Тю я ступил) забыл символ конца строки вот рабочий вариант


<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

$str='A';

if(preg_match('/^[a-zA-Z]{0,2}$/',$str))
{
echo 'yes ' . $str;
}
else
{
echo 'no ' . $str;
}
?>

не работает (
$str="abcAaAbAc";
выдает yes
RockerMisha
У меня
user posted image
зайди на мой хост и убедишься
http://metalpriest.ru/1.php
inpost
модификатор U и такое правило: a-z - диапазон. В числе 1 символа обязательно.
.* - любые символы.

А теперь выражение: диапазон,любые символы,диапазон,любые символы,диапазон, любые символы, диапазон.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
zshgm
Цитата (RockerMisha @ 26.07.2012 - 07:04)
У меня
user posted image
зайди на мой хост и убедишься
http://metalpriest.ru/1.php

$str="AabcAac";
- тоже выдаст no, хотя здесь всего 2 символа из нужного диапазона.
То что вы указали /^[a-zA-Z]{0,2}$/ - делает совсем другое, строка начинается и заканчивается на символы [a-zA-Z], которых подряд должно быть не более 2х. Это совсем не то о чем я спрашивал!

Я спрашивал:
Как сделать регулярное выражение которое покажет no если в строке более 2х символов [A-Z] и покажет yes если символов 0, 1 или 2.
К примеру подходят:
123A1A, 123AA, 123AZ123, Z
Не подходят:
AAA, 123AZZ, 1Z2ZZ

т.е. без разницы в каком порядке и какой очередности будут расположены символы, но суммарно символов из диапазона [A-Z] не должно быть более 2х
zshgm
Решение:

/^([^A-Z]*[A-Z]{0,1}[^A-Z]*){0,2}$/u
inpost
тоже самое, что и я сказал за исключением того, что может работать неверно smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.