如何使用Javascript检查字符串是否有任何非ISO-8859-1字符?

abh*_*ekd 10 javascript regex

我想为 Javascript 中的 ISO-8859-1 字符编写一个字符串验证器(或正则表达式)。

如果字符串有任何非 ISO-8859-1 字符,则验证器必须返回false否则true。例如:

str = "abcÂÃ";
validator(str); // should return true;

str = "a ? ?";
validator(str); // should return false;

str ="? ?";
validator(str); // should return false;
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下正则表达式,但效果不佳。

var regex = /^[\u0000-\u00ff]+/g;
var res = regex.test(value);
Run Code Online (Sandbox Code Playgroud)

Buz*_*nas 8

由于您想在存在任何非 ISO-8859-1 字符时返回 false ,因此您可以使用双重否定:

var str = "abcÂÃ";
console.log(validator(str)); // should return true;

str = "a ? ?";
console.log(validator(str)); // should return false;

str = "? ?";
console.log(validator(str)); // should return false;

str = "abc";
console.log(validator(str)); // should return true;

str = "?";
console.log(validator(str)); // should return false;

function validator(str) {
  return !/[^\u0000-\u00ff]/g.test(str);
}
Run Code Online (Sandbox Code Playgroud)

它使用!/[^\u0000-\u00ff]/g.test(str),因为它检查是否有任何非字符,如果没有,则返回true,否则返回false