我有一个在线排行榜,来自世界各地的玩家可以在这里输入他们的分数。在我的应用程序中,我想将播放器的名称限制为英文字母数字和外语字符,但不允许使用特殊符号。
此数据保存到在线 mysql 数据库中。
我知道我可以使用以下方法检查英文字母数字
string correctedName = Regex.Replace(settings.PlayerNameSetting, @"[^A-Za-z0-9 ]+", "");
但是允许接受日文、中文、西班牙文或其他语言字符怎么样?
在 .Net 中,
^[\p{L}\d_][\p{L}\d_.\s-]*$
相当于您的正则表达式,另外还允许其他 Unicode 字母。
解释:
\p{L}
是 Unicode 属性“字母”的简写。
警告:我认为您不想允许下划线作为初始字符(仅在第二个字符类中存在证明)。由于\w
包含下划线,因此您的正则表达式确实允许它。您可能希望将它从我的解决方案中的第一个字符类中删除(\p{L}
当然,它不包含在 中)。
在 ECMAScript 中,事情并不那么容易。您必须定义自己的 Unicode 字符范围。幸运的是,StackOverflow 的一位用户已经站出来设计了一个 JavaScript 正则表达式转换器: