用于validationUTF-8的正则expression式仅包含“普通”字符

在我的项目中,用户可以注册一个可公开查看的昵称。 我希望允许该名称包含来自任何脚本(阿拉伯文,拉丁文,西里尔文,日文等)的字符,但要防止控制字符,标点符号和非字母字符(如✇或✈)。

我发现了很多用于过滤来自各种单独脚本的字母数字字符的例子,但是我不想花费数天的时间来通过编码表来挖掘每一个脚本,以便通过手动方式。

任何build议?

在JavaScript中,当你想用正则expression式来处理Unicode时,通常的解决办法就是放弃。

下一个最常用的解决scheme是使用xregexp ,它碰巧拥有您似乎需要的类 :

 var unicodeWord = XRegExp('^\\p{L}+$'); unicodeWord.test('Русский'); // -> true unicodeWord.test('日本語'); // -> true unicodeWord.test('العربية'); // -> true 

我在Perl中用\ p {拉丁}来select所有拉丁字符。 在这个页面上有一个关于中途选项的完整列表: http : //www.regular-expressions.info/unicode.html 。

它似乎可以inheritance到JavaScript,因为它使用XRegExp。

编辑2:或者 – 组成一个不允许的字符列表来检查 – 然后\ p {通用}将是一个起点。

编辑:显然我做这个记忆是从很多以前。 我无法让它与我当前的Perl版本(这是一个特例)一起工作。 所以 – 它可能是完全脱离基地的。