Проверьте, может ли строка быть сформирована из определенного набора символов.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проверьте, может ли строка быть сформирована из определенного набора символов.

Сообщение Anonymous »

Я работаю с цифровыми строками длиной от 4 до 8 цифр в диапазоне от 0001 до 99999999. Примеры:
  • 0010
  • 877565
  • 90204394
Мне нужно проверить, может ли числовая строка быть сформирована из определенного набор. Думайте об этом как о мешочке для скрэббл с разными персонажами. В наборе:
  • 2 раза 0 (00)
  • 4 раза 1 (1111)
  • 3 раза 2 (222)
  • 2 раза 3 (33)
  • 3 раза 4 (444)
  • 5 раз по 5 (55555)
  • 2 раза по 6 (66)
  • 5 раз по 7 (77777)
    2 раза 8 (88)
  • 2 раза 9 (99)
С помощью этого определенного набора цифр строка 0010 не может быть сформирована, поскольку в ней слишком много на 1 ноль: нужно 3, но набор предоставляет только 2. Результат должен быть: false.Напротив, строка 90204394 может быть сформирована, поскольку определенный набор содержит достаточное количество каждой цифры. Это соответствует параметрам; желаемый результат: true.
Я решил выполнить проверку с помощью регулярного выражения, потому что оно вернет либо true, либо false, что в данном случае идеально. У меня получилось следующее:

Код: Выделить всё

preg_match('/(0{0,2}1{0,4}2{0,3}3{0,2}4{0,3}5{0,5}6{0,2}7{0,5}8{0,2}9{0,2})/', $string);
К сожалению, я получаю результат, что каждая проверенная строка выдает true, даже если ее явно невозможно сформировать; например 08228282 (поскольку он содержит одну 8 и одну 2 слишком много).
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/790 ... racter-set
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»