正则表达式模式,如果字符串包含字符

时间:2017-01-30 09:15:21

标签: javascript html regex string web

很抱歉,对于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("�"));




2 个答案:

答案 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]

在第二种情况下,当使用特殊字符时你是真的,而当所有字符都是安全的时候你是假的,所以你可能不得不翻转你之后做的支票