1

我想验证一个文本框以确保只能向其中添加字符和 Unicode 字符。例如,以下内容将是有效的:

Gräfelfing
Gießen
München

但这些应该是无效的:

Gräfelfing123
Gießen!@#$
München123#@#

我知道如何使用验证器方法验证字符:

jQuery.validator.addMethod("lettersonly", function(value, element) {
      return this.optional(element) || /^[a-zA-Z]+$/i.test(jQuery.trim(value));
    }, "Letters only please"); 

但是我怎样才能为此添加 Unicode 字符验证呢?请帮助,提前谢谢。


* 更新 *

我在这个问题的帮助下尝试了一个解决方案 -正则表达式匹配非英文字符

但它不起作用:

jQuery.validator.addMethod("lettersonly", function(value, element) {
      return this.optional(element) || /^[a-zA-Z\u0000-\u0080]+$/i.test(jQuery.trim(value));
    }, "Letters only please"); 
4

1 回答 1

2

Javascript缺少“所有带有变音符号的拉丁字母”的内置字符类,因此您必须自己决定您真正想要接受的内容。

例如:

  • 你想接受西里尔字母(俄语、保加利亚语、白俄罗斯语等)吗?
  • 你想支持假名(日文)还是韩文(韩文)?

毕竟,这些都是“非英语(或更准确地说:非拉丁)字母”。

在你决定之后:

  • 查阅代码图表并在正则表达式中列出您想要的所有范围
  • 您可以使用此工具创建按 Unicode 块过滤的正则表达式。

例子

要将变音符号添加到代码检查中的允许字符列表中,您可以使用/^[a-zA-Z\u0080-\u024F]+$/i
That will cover

  • 拉丁语 1 补充
  • 拉丁语扩展-A
  • 拉丁语扩展 B 范围。

这应该涵盖大多数使用过的变音符号,并且作品将涵盖您提供的所有示例。
根据需要混合和匹配。

于 2012-04-23T10:31:19.493 回答