4

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

例如,这是我禁止西里尔字母的方式:

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

4

2 回答 2

6

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

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

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


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

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

于 2015-04-17T07:32:50.563 回答
0

使用负集:

[^A-Za-zàèìòùáéíóú(othercharacters..)]
于 2015-04-17T07:31:45.910 回答