Javascript 检测非欧洲字符

Javascript 检测非欧洲字符,javascript,regex,latin,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

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

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

$('.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英语(例如,不是意大利语)。

使用负数集:

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

只允许在某些给定范围内使用unicode符号,例如

/^[a-z\u00C0-\u00F6\u00F8-\u017E]+$/i
小提琴示例:


此正则表达式允许基本拉丁语/拉丁语扩展A(变音符号和重音字母)。它不包括任何其他字母/符号


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

。虽然此操作非常有效,但它检测到的非欧洲字符不如检测到的非欧洲字符多。这不起作用。。。我在代码中替换了您的正则表达式,仍然能够在没有任何警报的情况下键入ية或Ф!好的,谢谢,我只需要检查负数匹配,它可以工作。如果我还需要允许标点和空格呢?正如您从unicode表中看到的,我链接的标点在unicode范围
\u0020-\002F
中。把它包括在regexp中。我有一个XML,它包含一堆双向字符(阿拉伯语和希伯来语),还有泰米尔语字符,这些字符是通过OCR错误生成的。我使用[\u0590-\u1000]找到了它们。我认为您需要定义“欧洲”。西里尔文字在少数几个欧洲国家都有使用,那么你的底线到底在哪里呢?你认为冰岛是欧洲的一部分吗?阿拉伯数字呢?在这一页上有几个。。。