使用Javascript检查字符串是否包含特殊字符

时间:2019-04-01 14:48:52

标签: javascript

我有一个密码字段,我需要使用JavaScript检查以下字符:

  

! @#$%^&*

我试图这样做,并且按预期工作:

displacements

有没有更简单/有效的方法来做到这一点?

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式测试字符串:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

function isValid(str){
     return !/[!@#$%^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str);
    }

答案 1 :(得分:0)

用于实现此目标的正则表达式为[!@#$%^&*]

这将检查您列出的所有特殊字符。要在函数中使用,可以使用match函数,如下所示:

public boolean isSpecialCharacter(String string) {
    String pattern = "[!@#$%^&*]";
    return string.matches(pattern);
}

答案 2 :(得分:0)

正则表达式将是一个不错的单行解决方案。但这实际上比indexOf慢(如您发布的代码)。在此处查看一些信息:https://jsperf.com/regexp-vs-indexof

正则表达式文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

function isValid(str){
 return /[!@#$%^&*(),.?":{}|<>]/g.test(str);
}

此网站也非常适合测试正则表达式https://www.regextester.com/

答案 3 :(得分:0)

尽管这里的两个答案都可以解决问题,但仅出于演示目的,我将提交一种不使用RegEx的方法。也许我们并不总是需要使用正则表达式,即使是最简单的检查也是如此。而且这里的字符列表很短,另一种选择可能是:

let testString = 'abcd';// the string you are checking
let chars = '!@#$%^&*'.split('');// just a way to write your chars as an array
let isValid = chars.some((c) => testString.includes(c));// check if at least one of the chars is included in your string

不是真正的基准测试,但是我希望它很快,因为some方法应该在找到正匹配项时尽快返回,includes也应返回。

也许您将需要一些someincludes方法的polyfill或将箭头函数替换为常规函数,这取决于您要支持的浏览器类型,这只是演示一个想法。