javascript - 限制特殊字符的正则表达式

标签 javascript regex

我的表单中有一个地址字段,我想限制
* | \ " : < > [ ] { } \ ( ) '' ; @ & $
我试过

var nospecial=/^[^* | \ " : < > [ ] { } ` \ ( ) '' ; @ & $]+$/;
            if(address.match(nospecial)){
                alert('Special characters like * | \ " : < > [ ] { } ` \ ( ) \'\' ; @ & $ are not allowed');
                return false;

但它不起作用。请告诉我我错过了什么?

最佳答案

您需要在字符类中转义右括号(以及反斜杠)。您也不需要所有空格:

var nospecial=/^[^*|\":<>[\]{}`\\()';@&$]+$/;

我摆脱了你所有的空间;如果您还想限制空格字符,请重新添加一个空格。

编辑 正如@fab 在评论中指出的那样,反转正则表达式的含义会更有效:

var specials=/[*|\":<>[\]{}`\\()';@&$]/;

并测试是否存在特殊字符(而不是不存在):

if (specials.test(address)) { /* bad address */ }

关于javascript - 限制特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14745961/

相关文章:

javascript - 从 Protractor 中的页面对象获取元素

javascript - Masonry HTML/CSS 创建的 block float 分开

javascript - 使用变量更新 Kendo Chart 系列的数据会导致重绘将列绘制出图表

java.util.regex.PatternSyntaxException : Unmatched closing ')' : during string. 拆分操作

php - 如何使用正则表达式从HTML获取所有YouTube iframe

javascript - 顺序异步函数

javascript - 创建一个简单的 10 秒倒计时

regex - 如何在 Chrome Dev Tools 中过滤没有扩展的 XHR 请求?

c# - 从框括号内的字符串中提取子字符串

c# - 正则表达式无法过滤 WinForms 中的 TextBox 字符