返回未定义的jQuery正则表达式测试

返回未定义的jQuery正则表达式测试,jquery,regex,Jquery,Regex,在过去的一个小时里,我一直在玩弄这个问题,最后,我想问一下是什么导致了这个问题。我正在使用正则表达式创建一个小的后备,第一个输入可以正常工作,但第二个返回未定义。以下是HTML: <input type="email" value="this@matches.com" /> <input type="text" pattern="[A-Za-z]{3}" value="ABC" /> 。。。也许JS需要“转换”才能将其读取为正则表达式 如果你能帮忙,这是我的JSFIDL

在过去的一个小时里,我一直在玩弄这个问题,最后,我想问一下是什么导致了这个问题。我正在使用正则表达式创建一个小的后备,第一个输入可以正常工作,但第二个返回未定义。以下是HTML:

<input type="email" value="this@matches.com" />
<input type="text" pattern="[A-Za-z]{3}" value="ABC" />
。。。也许JS需要“转换”才能将其读取为正则表达式

如果你能帮忙,这是我的JSFIDLE,谢谢你!该脚本是完整代码的一部分,其中包括问题区域、循环元素和我通过函数传递的变量:

非常感谢

new RegExp($(this).attr('pattern'));
调用函数的“this”的值是对文档对象的引用。您需要在each()调用中移动此变量定义。这就是为什么你没有定义

您应该从字符串中创建一个正则表达式。不能对字符串调用.test()

var patternFallback = RegExp($(this).attr('pattern'));

我同意火箭哈兹曼的观点。给输入一个ID,并以这种方式进行测试

<input id="myEmailId" type="email" value="this@matches.com" />
<input id="myTextId" type="text" pattern="[A-Za-z]{3}" value="ABC" />

在任何类型的事件处理程序之外都有
$(this).attr('pattern')
。因此,
这个
不是你的元素。啊,是的,对不起,这应该在循环中。不过,下面的答案正是我所需要的。谢谢Erik。我本来打算在$.each循环中包含$(this),我需要的是新的RegExp($(this.attr('pattern'));感谢您的支持,不过请稍微键入“RexExp!”:)@Halcyon21哈哈,接球不错。固定的。
var patternFallback = RegExp($(this).attr('pattern'));
<input id="myEmailId" type="email" value="this@matches.com" />
<input id="myTextId" type="text" pattern="[A-Za-z]{3}" value="ABC" />
var patternFallback = $("#myTextId").attr('pattern');