jQuery Validate方法检查特殊字符

我正在尝试(并且失败)编写一个正则表达式语句,在我的Javascript表单validation中检查特殊字符,例如!@#$%^&*()_ + ?’“{} []。

据我所知,这可能已被问过1000次,但我受到了一些严重的时间压力。 如果您不想回答下面的问题,并且您能够指出我对上述问题的先前答案的方向,我将非常感激。

在类似的说明中,任何人都可以告诉我为什么当我输入小写的’abc’等时出现以下错误? 我很困惑。

jQuery.validator.addMethod("specialChars", function( value, element ) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = String.fromCharCode(event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.preventDefault(); return false; } }, "please use only alphanumeric or alphabetic characters"); 

不要从头开始编写自己的自定义方法,而是包含additional-methods.js文件并使用alphanumeric规则。

 $(document).ready(function () { $('#myform').validate({ rules: { field: { alphanumeric: true } } }); }); 

演示: http : //jsfiddle.net/YsAKx/


如果您不想包含其他外部文件,只需复制默认的alphanumeric方法即可…

 jQuery.validator.addMethod("alphanumeric", function(value, element) { return this.optional(element) || /^\w+$/i.test(value); }, "Letters, numbers, and underscores only please"); 

几乎没有变化

 jQuery.validator.addMethod("specialChars", function( value, element ) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = value; if (!regex.test(key)) { return false; } return true; }, "please use only alphanumeric or alphabetic characters"); 
  1. 如果测试有效,则需要返回值true
  2. validation器不是事件处理程序,因此您不能使用event.preventDefault() ,这必须在keypress事件中完成。
  3. 您需要测试传递给validate方法的值。

演示: 小提琴

注意:由于您使用+ wild char,文本框中至少需要一个字符,您可能希望使用required规则将其拆分为两个规则,并将wild char更改为*

 ^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']*|[^&;<>\`]* 

你想在这个[]大括号中添加特殊字符^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']你不想再添加这部分[^&;<>\ ]`