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