powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна помощь с регуляркой для валидации строки
8 сообщений из 8, страница 1 из 1
Нужна помощь с регуляркой для валидации строки
    #39935683
poiuytrewq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

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

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

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

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

1,5,100
90000,100,80

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

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

а проверка на диапазон в регулярных выражениях невозможна. Разбей строку на элементы и проверяй их все по очереди.
...
Рейтинг: 0 / 0
Нужна помощь с регуляркой для валидации строки
    #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
Нужна помощь с регуляркой для валидации строки
    #39935733
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle
1. От 1 до 4 любых цифр.
И то ошибся, ноль исключить забыл. Начало так будет выглядеть:
0. Один символ от 1 до 9.
1. От 2 до 4 любых цифр.

В общем, задача решаема, только очень уж "весело" :)
...
Рейтинг: 0 / 0
Нужна помощь с регуляркой для валидации строки
    #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
Нужна помощь с регуляркой для валидации строки
    #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
Нужна помощь с регуляркой для валидации строки
    #39939164
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661

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

Но да, про Raku я забыл, извиняюсь.
...
Рейтинг: 0 / 0
Нужна помощь с регуляркой для валидации строки
    #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
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна помощь с регуляркой для валидации строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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