2010-03-31 38 views
8

Tôi đang kiểm tra một trường nếu đó là ký tự Latinh hay không.Tôi cần biểu thức chính quy nào để kiểm tra một số ký tự không phải là chữ cái Latinh?

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

này hoạt động tốt, nhưng tôi muốn thay đổi nó để khi tôi nhập bất kỳ ký tự phi Latin, chẳng hạn như nhân vật Trung Quốc, cùng với một không gian (đó là trong phạm vi mà tôi hiện đang sử dụng) nó sẽ vẫn nói đó là các ký tự không phải là chữ latin.

Làm cách nào để thay đổi biểu thức chính quy mà tôi phải thực hiện?

Trả lời

9

Chỉ cần kiểm tra sự hiện diện của ký tự khác ASCII thay vì thử nghiệm cho sự hiện diện của ký tự 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");  
} 
+0

Đó là một ý kiến ​​hay! Cảm ơn! Tôi nhận được lỗi này khi cố gắng sử dụng regex đó trong php: Biên dịch không thành công: PCRE không hỗ trợ \ L, \ l, \ N, \ U hoặc \ u tại bù đắp 2 – zeckdude

+1

Cú pháp khác nhau trong PHP: Thử '/ [ \ x {0000} - \ x {007f}]/u' –

+0

@Tim - Cảm ơn bạn rất nhiều! – zeckdude

4

Nếu bạn muốn kiểm tra toàn bộ sử dụng chuỗi (trong php)

preg_match('/^[\x{0000}-\x{007F}]*$/u',$s); 
Các vấn đề liên quan