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