Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна помощь с регуляркой для валидации строки / 8 сообщений из 8, страница 1 из 1
09.03.2020, 16:12
    #39935683
poiuytrewq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
Всем привет,

помогите пожалуйста составить регулярное выражение для валидации строки вида:

число,число,число

то есть, строка представляет собой числа через запятую, в строке не должно быть других символов, кроме [0-9,], при этом, строка не должна начинаться с запятой и не должна на неё заканчиваться, было бы ещё очень хорошо, чтобы числа были в диапазоне между 1 и 92355

примеры валидных строк

1,5,100
90000,100,80

примеры невалидных строк

1, 5,12 содержит пробел
0,,3 содержит запятую, за которой не следует валидное число
80,44, содержит запятую, за которой не следует валидное число
,3,55 содержит запятую, перед которой отсутствует валидное число
99999 содержит невалидное число (за пределами разрешенного диапазона)
...
Рейтинг: 0 / 0
09.03.2020, 16:38
    #39935685
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
\d+,\d+,\d+

а проверка на диапазон в регулярных выражениях невозможна. Разбей строку на элементы и проверяй их все по очереди.
...
Рейтинг: 0 / 0
09.03.2020, 18:42
    #39935708
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
poiuytrewq
чтобы числа были в диапазоне между 1 и 92355
В числовом контексте не проверите. В строковом можно. Огород хороший получается. Проверяются несколько вариантов через ИЛИ.
1. От 1 до 4 любых цифр.
2. Первый символ от 1 до 8, далее 4 любых цифры.
3. Первый символ 9, второй 0 или 1, далее 3 любых цифры.
4. Первый символ 9, второй 2, третий от 0 до 2, далее две любых цифры.
5
6
и т.д.
Смысл понятен, недеюсь.
...
Рейтинг: 0 / 0
09.03.2020, 21:52
    #39935733
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
vkle
1. От 1 до 4 любых цифр.
И то ошибся, ноль исключить забыл. Начало так будет выглядеть:
0. Один символ от 1 до 9.
1. От 2 до 4 любых цифр.

В общем, задача решаема, только очень уж "весело" :)
...
Рейтинг: 0 / 0
11.03.2020, 17:21
    #39936366
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
Код: php
1.
2.
3.
4.
5.
var $matches = array();
preg_match('/^(\d+),(\d+),(\d+)$/', '123,456,99999999', $matches );
var_dump( $matches );
preg_match('/^(\d+),(\d+),(\d+)$/', 'aaaa,456, 99999999', $matches );
var_dump( $matches );


Ну а если хочется указать пользователю, где конкретно косяки, то делить по запятым, и каждую отдельно проверять.
...
Рейтинг: 0 / 0
17.03.2020, 05:51
    #39938066
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
White Owl
\d+,\d+,\d+

а проверка на диапазон в регулярных выражениях невозможна . Разбей строку на элементы и проверяй их все по очереди.


А вот это уже зависит от языка и реализации.

В отличие от унылого PHP имеется лучезарный Perl6, в котором всё возможно:

Код: php
1.
say "1,8,90000" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','><!after ws> $/


output:
1,8,90000
0 => 1
0 => 8
0 => 90000

Код: php
1.
say "0,8,90000" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','> <!after ws> $/


output:
Nil

Код: php
1.
say "1,8,90001" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','> <!after ws> $/


output:
Nil

Код: php
1.
say "1,8,,90000" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','> <!after ws> $/


output:
Nil

Код: php
1.
say "1, 8,90000" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','> <!after ws> $/


output:
Nil

Код: php
1.
say "1,8,90000," ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|','> <!after ws> $/


output:
Nil

Код: php
1.
say "1,2,3,4,5" ~~  /^ ( «\d+» <?{ $/ <= 90000 && $/ >= 1 }> )+ % "," <!before ws|","> <!after ws> $/


output:
1,2,3,4,5
0 => 1
0 => 2
0 => 3
0 => 4
0 => 5
...
Рейтинг: 0 / 0
19.03.2020, 15:46
    #39939164
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
volodin661

В отличие от унылого PHP имеется лучезарный Perl6, в котором всё возможно:
Нет такого языка. С прошлого октября нет.

Но да, про Raku я забыл, извиняюсь.
...
Рейтинг: 0 / 0
30.12.2020, 09:50
    #40032506
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с регуляркой для валидации строки
валидация.pl

Код: perl
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
#!/usr/bin/env perl -lw
use strict;

sub check(_) {

    my $x = shift;

    ($x>=1 && $x<=100)

           ? '(*ACCEPT)'
           : '(*FAIL)'
}

do {

	print "Введите три числа, разделённых запятыми, в диапазоне от 1 до 100";

	print <>=~

	      /

	      ^
	      (\d+)   (??{check $1})
	      ,
	      (\d+)   (??{check $2})
	      ,
	      (\d+)   (??{check $3})
              $

	      /x
	    
	? 'Ввели очень хорошо'
	: 'Нет, плохо ввели, плохо'

} while 1; 



Исполнение:

Код: powershell
1.
perl валидация.pl
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна помощь с регуляркой для валидации строки / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]