/ / regex, щоб відповідати слову унікальним (неповторюваним) символам - регулярним виразом

регулярний вираз, щоб відповідати словом з унікальними (не повторюваними) символами - регулярним виразом

Я шукаю регулярний вираз, який відповідає слову, лише якщо всі його символи унікальні, тобто кожен символ у цьому слові з’являється лише один раз.

Приклад:
abcdefg -> повернеться МАТЧ
abcdefgbh -> повернеться НІ МАТЧ (бо лист b повторюється не раз)

Відповіді:

40 для відповіді № 1

Спробуйте це, можливо, це спрацює,

^(?:([A-Za-z])(?!.*1))*$

Пояснення

Assert position at the beginning of a line (at beginning of the string or after a line break character) «^»
Match the regular expression below «(?:([A-Z])(?!.*1))*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below and capture its match into backreference number 1 «([A-Z])»
Match a single character in the range between “A” and “Z” «[A-Z]»
Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?!.*1)»
Match any single character that is not a line break character «.*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the same text as most recently matched by capturing group number 1 «1»
Assert position at the end of a line (at the end of the string or before a line break character) «$»

11 для відповіді № 2

Ви можете перевірити, чи є два рядки символу в рядку:

^.*(.).*1.*$

(Я просто захоплюю одного з символів і перевіряю, чи є в ньому копія в іншому місці з зворотним посиланням. Решта .* є не "т-турботи).

Якщо регекс вище, то рядок має повторюваний характер. Якщо вищевказаний регулярний вираз не відповідає, всі символи унікальні.

Хороша річ щодо регулярного вибору вище, коли двигун регулярного генерування не підтримує огляд.

Очевидно, рішення Джона Ву - це прекрасний спосіб перевірити унікальність безпосередньо. Він стверджує, що кожен символ не містить поточного символу.


0 для відповіді № 3

Це також забезпечить повне відповідність будь-якому слову довжини з неповторними літерами:

^(?!.*(.).*1)[a-z]+$

Я трохи переглянув відповісти надав @Bohemian ще одне питання, щоб отримати це.

Минув також час, коли було задано вищезазначене питання, але я подумав, що було б непогано мати тут і цей шаблон регулярного виразів.