【问题标题】:What regular expression do I need to check for some non-latin characters?我需要什么正则表达式来检查一些非拉丁字符?
【发布时间】:2010-03-31 06:43:14
【问题描述】:

我正在检查一个字段是否是拉丁字符。

var foreignCharacters = $("#foreign_characters").val();
var rlatins = /[\u0000-\u007f]/;

if (rlatins.test(foreignCharacters)) {
  alert("This is Latin Characters");
} else {
  alert("This is non-latin Characters");    
}

这很好用,但我想改变它,所以当我输入任何非拉丁字符,例如中文字符,以及一个空格(在我目前使用的范围内)时,它仍然会说它是非拉丁字符。

如何更改我必须这样做的正则表达式?

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    只测试是否存在非 ascii 字符,而不是测试是否存在 ascii 字符:

    var foreignCharacters = $("#foreign_characters").val();
    var rforeign = /[^\u0000-\u007f]/;
    
    if (rforeign.test(foreignCharacters)) {
      alert("This is non-Latin Characters");
    } else {
      alert("This is Latin Characters");    
    }
    

    【讨论】:

    • 这是个好主意!谢谢!尝试在 php 中使用该正则表达式时出现此错误:编译失败:PCRE 在偏移量 2 处不支持 \L、\l、\N、\U 或 \u
    • PHP 中的不同语法:试试/[\x{0000}-\x{007f}]/u
    • 它说德国人Prüfung 是非拉丁字符
    【解决方案2】:

    如果你想检查整个字符串使用(在 php 中)

    preg_match('/^[\x{0000}-\x{007F}]*$/u',$s);
    

    【讨论】:

      【解决方案3】:

      使用代码点范围创建自己的正则表达式的另一种方法是使用xregexp library

      文档中的一些示例:

      XRegExp('^\\p{Hiragana}+$').test('ひらがな'); // -> true
      XRegExp('^[\\p{Latin}\\p{Common}]+$').test('Über Café.'); // -> true
      

      【讨论】:

        猜你喜欢
        • 2018-10-13
        • 2015-07-09
        • 2021-04-13
        • 2018-06-21
        • 2017-04-04
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多