检查字符串中的特殊字符。

104
我想检查一个字符串是否包含像!@#$%^&*.,<>/\'";:?这样的特殊字符,如果字符串至少包含其中一个字符,则返回true。
我尝试使用以下正则表达式和脚本:
var format = /^[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$/;

if( string.match(format) ){
  return true;
}else{
  return false;
}
如果字符串只包含特殊字符,则返回true,但如果字符串包含其他东西,例如字母数字字符(!example1,.example2),则返回false。

1
删除锚点和量词。为了更简洁,您可以使用三元运算符,如:return str.match(format) ? true : false; - Casimir et Hippolyte
1
@PetruLebada 嗯,考虑到您在帖子中实际上没有提出问题,我只能猜测。 - takendarkk
4
@Teemu,如果我有失礼之处请见谅,但我认为每个人都能理解我的问题,因为我很快就得到了一些好的答案。我没有以问号结尾并不意味着我的问题构建得不好。 - Petru Lebada
1
@Teemu,也许是我有问题,但这看起来并不那么不合逻辑...如果你能理解的话,我正在尝试阻止包含特殊字符的字符串,如果一个字符串至少有一个特殊字符,则运行警报。 - Petru Lebada
2
啊...下面代码中的文本描述了代码的工作原理,而不是您实际的条件吗?如果是这样的话,那我真的很抱歉,这是我的错。 - Teemu
显示剩余3条评论
12个回答

-1

我采用了一种替代方法,没有使用正则表达式,性能为O(n):

function hasSpecialChars(str) {
  const specialCharsSet = new Set("!@#$%^&*()_");
  for (let letter of str) {
    if (specialCharsSet.has(letter)) {
      return true;
    }
  }
  return false;
}

-3
你可以尝试这个:
``` regex = [\W_] ```
它肯定会对你有所帮助。

2
请提供更多关于为什么应该使用\W的信息?\W代表非单词字符(包括空格?) - Jry9972

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接