Jquery RegExvalidation
我想检查输入字段是否具有属性“pattern”,如果是,则执行正则表达式检查aganst所述模式。我知道这已经由HTML5完成,但我想自己处理该事件。 我收到此错误: 未捕获的TypeError:对象a-zA-Z没有方法’test’
///Check Perform Reg/////////////////////////////////////////////////////// if ($(this).attr("pattern")) { var reg = $(this).attr("pattern"); var currentValue = $(this).val(); if (reg.test(currentValue)) { $(this).after($error.clone().text("Invalid Input.Try Again.")); $(".error:hidden").fadeIn("slow"); hasError = true; return false; } } ///////////////////////////////////////////////////////////////////////////
仍然没有运气,
这里也是我的HTML:
First Name
通常使用javascript / jquery句柄正则表达式
var reg = /pattern/; if (reg.test($(this).val())) { // perform some task }
正如其他人已经提到的,你需要使用一个对象而不是jQuery attr()方法返回的字符串。 你可以在这里看到两者之间的区别。
将返回“字符串”:
var reg = $(this).attr("pattern"); console.log(typeof reg)
将返回“对象”:
var reg = new RegExp($(this).attr("pattern")); console.log(typeof reg);
所以,如果你更换:
var reg = $(this).attr("pattern");
附:
var reg = new RegExp($(this).attr("pattern"));
Uncaught TypeError:对象a-zA-Z没有方法’test’错误将消失
…但你的validation仍然不会很好。 您的条件逻辑表示如果正则表达式测试返回TRUE,则处理错误:
if (reg.test(currentValue)) { //error handling }
相反,如果测试返回FALSE,它应该处理错误:
if (!reg.test(currentValue)) { //error handling }
这应该适合你。
你可以尝试这样的事情。 它会警告“var2 failed”。
var var1 = "1"; var var2 = "A"; var myRegEx = new RegExp('[0-9]+'); //make sure the var is a number if (var1 != myRegEx.exec(var1)) { alert("var1 failed"); } if (var2 != myRegEx.exec(var2)) { alert("var2 failed"); }
字符串不是RegExp
对象。 你可以使用类似的东西:
var reg = new RegExp($(this).attr("pattern"));
下面是使用MVC中的Jquery基于正则表达式validation文本框的正确方法。 请注意,此表达式用于在一个字符串中validation多个电子邮件地址:
var emailReg = new RegExp(/^([A-Z0-9.%+-]+@@[A-Z0-9.-]+.[AZ]{2,6})*([,;][\s]*([A-Z0-9.%+-]+@@[A-Z0-9.-]+.[AZ]{2,6}))*$/i); var emailText = $('#email').val(); if (!emailReg.test(emailText)) { alert('Wrong Email Address\Addresses format! Please reEnter correct format'); return false; } }