2013-04-15 3 views
-1

У меня есть это требование, и я нахожусь на своем конце ума. Любая идея, как это сделать?Проверка соответствия диапазону имен.

Поле принимает одно значение или диапазон, который должен быть частью фильтра. Пример диапазонов: «A-D», все имена клиентов с именем, начинающимся с A, B, C или D; «SA-SP», все имена, начинающиеся с SA, SB, ..., SP; «MILG», все имена клиентов с именем, начинающимся с Milg;

При добавлении имен учетных записей диапазоны не должны пересекаться. Пример: A-Q, P-Z недействителен, так как диапазон P-Q перекрывается.

+2

Показать код, который Вы пытались? – LukeHennerley

+0

Так что вы также хотите разрешить сразу несколько диапазонов, например. «A-k, n-Q, W-za, Zc-Zw»? –

ответ

0

Не с чистым регулярным выражением. Регулярное выражение не может проверить, является ли совпадающий символ «меньшим», чем совпадающий символ.

Я хотел бы предложить, чтобы соответствовать шаблону, в C# что-то вроде этого

^\p{L}+(-\p{L}+)?(?:,\s*\p{L}+(-\p{L}+)?)?$: 

В JavaScript заменить \p{L} на [A-Za-z]

Затем расщепляется "" и проверить, если

  1. Все найденные шаблоны диапазона являются допустимыми диапазонами ==> конец первого диапазона приходит после начала (т. Е. Начальный символ «меньше», чем конечный символ).

  2. Диапазоны не перекрываются ==> начало первого диапазона выходит за пределы других диапазонов, и если конец первого диапазона также не находится в пределах другого диапазона.

Смежные вопросы