Я пытаюсь построить регулярное выражение для реализации следующего ограничения:
Значение может иметь любую длину, но не может содержать одинаковые буквы/цифры, которые могут вызвать путаницу при печати. Например, 1 (числовой), я (верхний регистр латинского i) и l (нижний регистр Latin L) выглядят одинаково; могут быть и другие подобные примеры
Я пробовал несколько вещей, но не могу заставить его работать, любая помощь будет высоко оценена: спасибо.
Например: я мог бы иметь Linux1
но не LINUX1
или linux1
Я сомневаюсь, что регулярные выражения - это путь сюда, но если вам действительно нужно, вам, вероятно, придется обрабатывать их в каждом конкретном случае: (1I)|(I1)|([Ii][Ll])|([Ll][Ii])
. Поэтому, если регулярное выражение будет соответствовать, вам придется отклонить строку. Рабочий пример регулярного выражения можно найти здесь.
В соответствии с вашими комментариями вы можете попытаться использовать что-то вроде этого: (1.*I)|(I.*1)|([Ii].*[Ll])|([Ll].*[Ii])
. Рабочее регулярное выражение можно найти здесь. Это регулярное выражение также проверяет значения, которые считаются схожими.
1fdsafsI
?