javascript - 如何使用正则表达式和 jQuery 匹配字符集中不包含的所有内容?

标签 javascript jquery regex

我正在尝试排除除[a-z] [A-Z] [0-9] 和 [~!#$] 之外的所有内容。

if( $("#name").val().test(/[^a-zA-Z0-9~!#$]/)) {
    alert("Disallowed character used.");
    return false;
}

我认为如果 test 找到匹配项,它会返回 true,并且因为我包含了插入符号,它应该匹配我的表达式中没有的所有内容。

但是这样的输入有效:jAcK%%$21#x

当它不应该工作时,因为它有我试图禁止的符号。

我哪里出错了?

谢谢

最佳答案

使用match而不是test,因为test是RegExp的函数,而不是String

var hasBadInput = !!"jAcK%%$21#x".match(/[^a-zA-Z0-9~!#$]/) //true

或者反转位置

(/[^a-zA-Z0-9~!#$]/).test("jAcK%%$21#x") //returns true

关于javascript - 如何使用正则表达式和 jQuery 匹配字符集中不包含的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49421637/

相关文章:

javascript - ui-router 阻止 transitionTo 重新加载父状态

javascript - 将对象添加到CPArray时抛出CPRangeException

php - 与 html、json 和 jquery 的乘法

python - 使用正则表达式抓取每次出现的内容

javascript - 为什么 .replace 方法使用正斜杠字符来括起第一个参数?

javascript - 父组件重新渲染后,React 子组件状态丢失

javascript - 无法在 D3.js 中呈现从源到目标的路径,将 v3 迁移到 v4

php - 功能自动运行而不是点击

javascript - 文本区域中的新行在 IE 中不起作用

c# - 删除或修剪字符串末尾的回车符