通过REGEX验证所有语言字符的字段

时间:2012-12-13 07:52:25

标签: javascript regex validation

我需要验证字段为空。但它应该允许英语和外语字符(UTF-8),但不允许使用特殊字符。我不擅长正则表达式。所以对此的任何帮助都会很棒......

3 个答案:

答案 0 :(得分:4)

如果我能说“Just do /^\w+$/.test(word)”,那会很好,但是......

有关JavaScript正则表达式中unicode支持(或缺少)的当前状态,请参阅this answer

你可以使用他建议的库,这可能很慢或者为此服务器的帮助(这可能会更慢)。

答案 1 :(得分:4)

如果您想支持多种语言,则必须只排除您不想要的字符,因为指定所需的所有范围将很困难

您需要查看list of Unicode blocks和/ the character database以确定要排除的块(例如,U + 0000到U + 001F。This Wikipedia article也可以提供帮助。

然后使用带有字符类的regular expression来查找要排除的内容。

例如,这将检查U + 0000到U + 001F和U + 007F字符(显然你将排除的不仅仅是这些):

if (/[\u0000-\u001F\u007F]/.exec(theString)) {
    // Contains at least one invalid character
}

[]标识“字符类”(要查找的列表和/或字符范围)。那个特定的人说通过\u0000(包括)和\u001F寻找\u007F

答案 2 :(得分:0)

您可以像这样测试 Unicode 字母:

str.match(/\p{L}/u)

或者对于像这样的非字母的存在:

str.match(/[^\p{L}]/u)