Bir giriş alanı yabancı karakterler içeriyorsa, nasıl test edebilirsiniz?

3 Cevap php

Bir şeklinde bir giriş alanı vardır. Teslim iterek üzerine, ben diğerleri arasında Çince gibi herhangi bir yabancı dil karakterleri, emin kullanıcı sadece non-latin karakterler girilen yapmak doğrulamak istiyorum, bu yüzden. Ya da herhangi bir latin karakterler içermediğinden emin olmak için en azından testte.

Bunun için düzenli bir ifade kullanabilir miyim? Bu ne için en iyi yaklaşım olacaktır?

Ben hem javascript ve PHP doğrulayarak duyuyorum. Ben programlama dilleri hem giriş alanına yabancı karakterleri kontrol etmek için ne çözümler kullanabilirim?

3 Cevap

Javascript, en azından, sen karakter aralığı, ifadelerin içi hex kodları kullanabilirsiniz:

var rlatins = /[\u0000-\u007f]/;

Daha sonra böyle bir dize herhangi bir latin karakter olup olmadığını görmek için test edebilirsiniz:

if (rlatins.test(someString)) {
  alert("ROMANI ITE DOMUM");
}

PHP, sen Unicode özelliğini kontrol edebilirsiniz IsLatin. Muhtemelen ne istediğinizi yakın bulunuyor.

preg_match('/\p{Latin}/u', $subject) true döndürür Yani, daha sonra $subject en az bir Latin karakter var. Ayrıca bkz this reference.

JavaScript Bu desteklemiyor; Eğer geçerli Unicode elle aralıkları contruct olurdu.

Tüm harfler not Latince olup olmadığını kontrol etmek için çalışıyveyauz, ama aksanlı harfleri kabul ediyveyauz.

Basit bir çözüm (bir doğrulama eklentisi varsa bu kullanışlıdır) regex kullanarak dize doğrulamak için:

/^[^a-z]+$/i
  • ^...$ - başından sonuna kadar Maç
  • ^[...] - olan karakterler not
  • a-z - Bir Z rağmen,
  • + - En az bir harf ile
  • /i - ignveyaing case (could also done /^[^a-zA-Z]+$/ )

Başka bir seçenek bir mektup aramak için basitçe:

/[a-z]/i

Dize conatins yazmak, böylece yapabilirsiniz bunu unvalidated Bu regex maç olacak.

JavaScript sizinle kolayca kontrol edebilirsiniz if:

var s = "שלום עולם";
if(s.match(/^[^a-z]+$/i){
}

veya

if(!s.match(/[a-z]/i))

PHP has a different syntax and mveyae security than JavaScript, but the regular expressions are the same.