javascript - 确定字符串是否有任何不在字符列表中的字符,如果有,哪些字符不匹配?

标签 javascript regex

我正在研究一个简单的密码验证器,想知道它是否可以用正则表达式或...除了单独检查每个字符之外还有什么。

基本上,如果用户输入类似“aaaaaaaaa1aaaaa”的内容,我想让用户知道不允许使用字符“1”(这是一个 super 简单的示例)。

我正在努力避免类似的事情

if(value.indexOf('@') {}
if(value.indexOf('#') {}
if(value.indexOf('\') {}

也许是这样的:

if(/[^A-Za-z0-9]/.exec(value) {}

有什么帮助吗?

最佳答案

如果你只是想检查字符串是否有效,你可以使用RegExp.test() - 这比 exec() 更有效,因为它会在找到第一次出现时返回 true:

var value = "abc$de%f";

// checks if value contains any invalid character
if(/[^A-Za-z0-9]/.test(value)) {
   alert('invalid');
}

如果你想找出哪些字符无效你需要使用String.match() :

var value = "abc$de%f";

var invalidChars = value.match(/[^A-Za-z0-9]/g);

alert('The following characters are invalid: ' + invalidChars.join(''));

关于javascript - 确定字符串是否有任何不在字符列表中的字符,如果有,哪些字符不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974244/

相关文章:

javascript - 谷歌API选择器: google is not defined

regex - perl + 仅当与行中的字符串完全匹配时才删除该行

python - 流上的正则表达式而不是字符串?

Javascript - 从对象数组中删除重复的 ID

Javascript函数定义

javascript - 如何模拟使用在 Node 模块中导出的导入(ES6 typescript)进行单元测试的外部注入(inject)库

regex - Mod_Rewrite : default value if cookie is not set

Python - 查找字符串中字符串列表第一次出现的索引位置

regex - 捕获组 VS 非捕获组

javascript - 如何在选中复选框时将字段设置为必填字段