2016-06-06 3 views
-2

Для исследования, которое я делаю, каждому присваивается уникальный номер. Все уникальные числа делятся на 11 (это делается потому, что он делает порядковые номера совершенно отличными друг от друга).Напишите регулярное выражение, которое идентифицирует числа, делящиеся на 11

Я бы идеально, как регулярное выражение, которое я могу использовать, чтобы проверить, что номер, введенный в поле study_id является допустимым значением - например, делится на 11. я буду иметь ведущие нули максимум 5 цифр Итак:

  • 00011 - Приемлемый
  • 00012 - Не Приемлемый
  • 13211 - Приемлемый
  • 13221 - Не Приемлемый

Любых предложения с благодарностью получили

+0

Я был бы удивлен, если бы это было возможно сделать, используя регулярное выражение. – Adrian

+1

Аналогичный вопрос, интересное чтение: [Как написать регулярное выражение, которое соответствует адресу с точками IPv4?] (Https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113) –

+1

Это может возможно, так как существует даже правило сокращения для вычисления деления с 11, но учитывая, как долго регулярное выражение для делимого на 3, я бы сказал, что это слишком широко. –

ответ

4

Это невозможно, потому что нет текстуальных сходств между числами, которые делятся на 11. Regex используется для согласования текста.

Например, 000165 делится на 11 как есть 00011.

Лучший способ проверить число - это разделить его на 11 и посмотреть, есть ли какой-либо остаток. Таким образом, в Excel вы могли бы сделать это:

=IF(MOD(165, 11) = 0, "VALID", "INVALID") 

Или C# вы могли бы сделать что-то вроде этого

bool isValid = 165 % 11 == 0; 

(Отказ от ответственности Я не знаком с ОДК, так что я не могу обеспечить подходящий образец, я только что догадался на лучший язык для написания)