如何仅验证文本,英文字符和非英文字符jquery验证器

时间:2012-04-23 09:14:24

标签: javascript jquery jquery-validate

我想验证一个文本框,以确保只能添加​​字符和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字符验证?请提前帮助,谢谢。


*更新*

我在这个问题的帮助下尝试了一个解决方案 - Regular expression to match non-English characters

但它不起作用:

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

1 个答案:

答案 0 :(得分:2)

Javascript缺少内置字符classe"所有基于拉丁语的字母都带有diactrics"所以你必须自己决定你真正想要接受的内容。

例如:

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

这些都是"非英语(或更正确:非拉丁语)的字母"毕竟。

在你决定之后:

  • 咨询code charts,然后列出您在正则表达式中所需的所有范围
  • 您可以使用this tool创建由Unicode块过滤的正则表达式。

示例

要在代码中检查允许的字符列表中添加diactrics,您可以使用/^[a-zA-Z\u0080-\u024F]+$/i
这将涵盖

  • Latin-1 Supplement
  • Latin Extended-A
  • Latin Extended-B范围。

这应涵盖大部分使用过的diactrics,并且您将提供所有示例 根据需要混合搭配。