我需要用什么正则表达式来检查一些非拉丁字符?

时间:2010-03-31 06:43:14

标签: javascript jquery regex

如果字段是拉丁字符,我正在检查字段。

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");    
}

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

如何更改我必须执行的正则表达式?

3 个答案:

答案 0 :(得分:10)

只测试是否存在非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");    
}

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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

文档中的一些示例:

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