假设我希望用户名仅由字母和数字组成,而与语言无关。
我想我可以用以下正则表达式部分来完成这个
(?>\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 id 是否位于我们可以过滤的特定范围内或类似的范围内?