很抱歉,对于Javascript和Regex来说,作为绝对的初学者,
我有一个Codepen:http://codepen.io/anon/pen/dNJNvK
我想要完成的是验证,如果String包含一些特殊的UTF-8字符。这就是我使用RegExp的原因。只有当要测试的字符串等于其中一个字符时,我才会返回false。但是如果它包含其中一个字符,我想返回false。
我怎样才能做到这一点,我知道这应该很容易,但我无法让它发挥作用。
var regEx = new RegExp('[\u0001-\u00FF]');
console.log("This should be true: " + regEx.test("Tes"));
console.log("This should be false: " + regEx.test("Tes�"));
console.log("This returns false, because the string equals a special character: " + regEx.test("�"));

答案 0 :(得分:2)
为什么不相反呢?
请参阅Regular expression to match non-English characters?
此外,您的测试可以是match
,也可以是整个字符串的test
var regEx = /[\x00-\x7F]/g; // can be added to
function okChar(str) {
var res = str.match(regEx);
if (res===null) return false;
return res.length===str.length;
}
console.log("This should be true: " + okChar("Tes"))
console.log("This should be false: " + okChar("Tesú"));
console.log("This returns false, because the string equals a special character: " + okChar("ú"));
答案 1 :(得分:2)
正如@Gabriel评论的那样,它返回true,因为字符串中至少有一个与你的范围匹配的字符
您要做的是检查每个字符是否在
范围内/^[\u0001-\u00FF]+$/
或任何字符不在
范围内[^\u0001-\u00FF]
在第二种情况下,当使用特殊字符时你是真的,而当所有字符都是安全的时候你是假的,所以你可能不得不翻转你之后做的支票