gpt4 book ai didi

javascript - 来自对象的正则表达式

转载 作者:行者123 更新时间:2023-11-30 10:33:47 25 4
gpt4 key购买 nike

我试图在 JavaScript 中验证一个表单,将所有正则表达式存储在一个对象中,但是当我调用任何正则表达式时,它不起作用

;(function() {

var Rules = {
"nick" : '/^[0-9a-zA-Z_]{5,20}$/'
, "password" : '/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/'
, "email" : '/^[_a-z0-9.-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'
, "name" : '/^[a-zA-Z -]+$/'
, "date" : '/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/'
, "country" : '/^[a-zA-Z]+$/'
};

$('.validation-required').click(function(e){
$(e.target).blur(function(){
if( e.target.value( Rules [ e.target.name ] ) ) {
console.log('true');
}
else {
console.log('false');
}
$(e.target).unbind('blur');
});
});
})();

所以,总是返回"false";我试过这样的事情:

if( e.target.value( new RegExp ( Rules [ e.target.name ] ) ) ) ...

if( e.target.value( Rules [ e.target.name ].toString() ) ) ...

if ( Rules [ e.target.name ].test( e.target.value ) ) ...

在这种情况下,控制台会抛出一个错误:

(...) has no methd test

我该如何解决?

最佳答案

Rules 中的条目是字符串,而不是正则表达式文字,因为它们被引用了。改为这样做:

var Rules = {
"nick": /^[0-9a-zA-Z_]{5,20}$/
...

此外,我不确定 if (e.target.value(Rules[e.target.name])) 是否完全正确...它应该更像 if (Rules[e.target.name].test(e.target.value))?

关于javascript - 来自对象的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15213162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com