|
|
|
| Здравствуйте
подскажите , как написать регулярку на проверку символов в конкретных местах
например нам точно известно что есть слова
y31
n33
y 10000001
n22222222
и не может быть две буквы впереди или просто число без букв
так не может быть
yy9999
ny01010
34567y
так же не может быть других букв кроме y и n
так не может быть
a98898
rty44555t
я предпологаю что чтото
ereg("^[yn][0-9]$",$data)
но чтото не прокатывает
\
помогите , научите и ссылку дайте где прочитать конкретно про подобное пожалуйста , а то я уже 4ый час в гугле сижу и ничено не смог =(( ума видимо не хватает - УВЫ
хду ваше решение спасибо!! | |
|
|
|
|
461.4 Кб |
|
|
для: Nevi
(20.05.2008 в 16:24)
| | Вроде выполняет поставленный задачи:) :
пропускает последовательности начинающиеся на заданные буквы
$data='y7';
if(!preg_match("/
^ //в начале строки
[n|y] //n или y
{1} // входят в строку 1 раз
? // но обязательно должен быть только один символ y или n
[0-9]* //затем пошли числа скока угодно
$ //строка заканчивается
/",$data)){
echo("нет");
} else {
echo("да");
}
//да
|
$data='n7';
if(!preg_match("/^[n|y]{1}?[0-9]*$/",$data)){
echo("нет");
} else {
echo("да");
}
//да
|
не пропускает последовательности, начинающиеся сразу с двух, трёх ... n заданных букв в любой последовательности
$data='ny7';
if(!preg_match("/^[n|y]{1}?[0-9]*$/",$data)){
echo("нет");
} else {
echo("да");
}
//нет
|
не пропускает обычные числа
$data='7';
if(!preg_match("/^[n|y]{1}?[0-9]*$/",$data)){
echo("нет");
} else {
echo("да");
}
//нет
|
не пропускает последовательности, начинающиеся с любых букв кроме y или n
$data='a7';
if(!preg_match("/^[n|y]{1}?[0-9]*$/",$data)){
echo("нет");
} else {
echo("да");
}
//нет
|
а также это регулярное выражение не пропускает последовательности начинающиеся с небуквенных знаков (!"№;% и т.д.), а так же - где y или n находятся в конце или середине последовательности
насчёт объяснения знаков в первом коде прости заранее. Как смог)))
прикрепил сверху архивчик почитать. От SoftTime | |
|
|
|
|
|
|
|
для: Nevi
(20.05.2008 в 16:24)
| | Вы забыли перед знаком доллара поставить плюс.
echo preg_match("/^[yn][0-9]+$/",$data);
|
| |
|
|
|
|
|
|
|
для: Trianon
(25.05.2008 в 20:18)
| | я проверял, у меня работало=). а что сделает +? | |
|
|
|
|
|
|
|
для: Vertex
(25.05.2008 в 20:20)
| | То, что это не один символ.
<?php
$data='yn7';
if(!preg_match("/^[yn]+[0-9]+$/",$data)){
echo("íåò");
} else {
echo("äà");
}
?>
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(25.05.2008 в 20:29)
| | а если в моё выражение поставить вместо * + это сильно поменяет суть? | |
|
|
|
|
|
|
|
для: Vertex
(25.05.2008 в 20:35)
| | В какое именно?
Вы их много привели :) | |
|
|
|
|
|
|
|
для: AcidTrash
(25.05.2008 в 20:38)
| | заметьте, они одинаковы))))
if(!preg_match("/^[n|y]{1}?[0-9]*$/",$data)){
|
| |
|
|
|
|
|
|
|
для: Vertex
(25.05.2008 в 20:40)
| | Так, хорошо, что конкретно должно пропускать? (Примеры) | |
|
|
|
|
|
|
|
для: AcidTrash
(25.05.2008 в 21:27)
| | дык примеры же в самом первом посте=) | |
|
|
|
|
|
|
|
для: Vertex
(25.05.2008 в 22:07)
| | Тогда под Ваш шаблон будут подходить выражения типа "y", "n", т.е. без цифр. | |
|
|
|
|
|
|
|
для: AcidTrash
(25.05.2008 в 20:38)
| | - | |
|
|
|
|
|
|
|
для: AcidTrash
(25.05.2008 в 20:29)
| | > То, что это не один символ.
То, что это не нуль символов. | |
|
|
|
|
|
|
|
для: BinLaden
(26.05.2008 в 11:53)
| | То что не нуль показывает [0-9] -это и будет, что не нуль, а 1 символ(в данном случае цифра от 0 до 9) | |
|
|
|
|
|
|
|
для: AcidTrash
(26.05.2008 в 12:25)
| | > То что не нуль показывает [0-9] -это и будет, что не нуль, а 1 символ(в данном случае цифра от 0 до 9)
Я не понимаю о чём Вы говорите.
Был вопрос:
> а что сделает +?
Я так понимаю, что Вы дали на него такой ответ:
> То, что это не один символ | |
|
|
|
|
|
|
|
для: BinLaden
(26.05.2008 в 15:21)
| | блин, точно , просто y и n проходят..... а этого быть, судя по всему, не должно.
Значит если моё выражение будет выглядеть так:
$data='ny7';
if(!preg_match("/^[n|y]{1}?[0-9]+$/",$data)){
echo("нет");
} else {
echo("да");
}
//нет
| оно удовлетворит всем поставленным автором задачам? | |
|
|
|
|
|
|
|
для: Vertex
(26.05.2008 в 22:06)
| | Да, но "{1}?" - лишнее в шаблоне. | |
|
|
|
|
|
|
|
для: BinLaden
(26.05.2008 в 15:21)
| | >Я не понимаю о чём Вы говорите.
>Был вопрос:
> а что сделает +?
>Я так понимаю, что Вы дали на него такой ответ:
> То, что это не один символ
Имеется ввиду, что после символов yn должно быть число от 0 до, скажем к примеру до 1000.
Если использовать диапозон [0-9] или эквивалент \d, то после yn обязательно должно быть число, но от 0 до 9, т.е один числовой символ(скажем 10 уже не пройдет).
Если после [0-9], будет стоять +, то это означает, что должно быть число от 0 до 9 и более.
Если поставить *, то будет означать, что число после yn может быть, а может и не быть, в любом случае условие пройдет. | |
|
|
|
|
|
|
|
для: AcidTrash
(27.05.2008 в 22:23)
| | Теперь ясно. Интересная у Вас форма ответа, я должен сказать. | |
|
|
|
|
|
|
|
для: Nevi
(20.05.2008 в 16:24)
| | Возможно вас устроит выражение
<?php
$data='y7';
if(!preg_match("/^[y+?n+?][\d]+$/",$data)){
echo("Нет");
} else {
echo("Да");
}
?>
|
| |
|
|
|