检测非欧洲字符

时间:2015-04-17 07:29:07

标签: javascript regex latin

我需要阻止我的用户在文本框中输入非欧洲字符。

例如,这是我如何禁止西里尔语:

$('.test').keyup(function(e) {
        var toTest = $(this).val();
        var rforeign = /[\u0400-\u04FF]/i;
        if (rforeign.test(toTest)) {
            alert("No cyrillic allowed");
            $(this).val('');
        } 
    });

但我还需要排除阿拉伯语,日语等。

我只想允许:

  • ASCII英文,标准字符
  • 意大利语重音字母:àèìòùéíóú
  • 欧洲语言的其他特殊字符:法语,德语......

有没有办法用范围来做?

我尝试了/[\u0400-\u04FF]/i,但它只允许ASCII英语(例如非意大利语)。

2 个答案:

答案 0 :(得分:5)

只允许给定范围内的unicode符号,例如

/^[a-z\u00C0-\u00F6\u00F8-\u017E]+$/i

示例小提琴:https://jsfiddle.net/4y6e6bj5/3/


这个正则表达式允许基本的拉丁语/拉丁语扩展A(变音符号和重音字母)。它排除了任何其他字母/符号。

如果您需要允许其他特定的unicode符号,请查看unicode table并在正则表达式中插入所需数量的范围

答案 1 :(得分:0)

使用否定集:

[^A-Za-zàèìòùáéíóú(othercharacters..)]