Скажем, я хочу, чтобы имена пользователей состояли только из букв и цифр независимо от языка.Разрешать только буквы и цифры в строках, но без путаницы
Я думаю, что я мог бы сделать это с помощью следующих регулярных выражений частей
(?>\p{L}[\p{Mn}\p{Mc}]*) //match any letter, including those consisting of two code points
\p{Nd} //match any digit
Теперь у меня есть проблема, что пользователи могут претендовать на другие пользователи, используя имя пользователя, который имеет тот же вид, как один от другого пользователя (нападение гомографа). admin vs admin будет примером.
Я думаю, что невозможно легко исключить символы, которые являются буквами и путаницами, используя регулярное выражение, но как насчет вне контекста регулярных выражений. Нужны ли идентификаторы unicode путаницы в определенных диапазонах, которые мы могли бы фильтровать или что-то в этом роде?
Для этой функции существуют библиотеки; они собирают гомографы в больших таблицах и компилируют их в одно регулярное выражение. – Bergi
Интересно, мне кажется, я должен их искать. – user764754