Jquery - 将字符串转换为regex对象

时间:2012-09-04 06:10:20

标签: javascript jquery html regex expression

我的正则表达式为/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/,在html中我将其添加为隐藏元素,并将元素的值设置为上述模式

当我这样做时:

var regex = /^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/ 
var text = $(this).val()

然后使用regex.test(text)进行测试就可以了。

但是当我像这样分配正则表达式时:

var regex = $("#m"+id).val() // (my hidden element)
然后它不起作用。我已经尝试使用新的RegExp进行分配,但也没有工作。我认为它正在这样做,因为它将值作为字符串从$("#m"+id).val()返回(我在这里返回正确的值),但不知道该怎么做解析它。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果你想从string构建regexp,然后使用RegExp类的构造函数,它会使用不带斜杠的字符串,所以你应该删除它们。 .slice(1, -1)删除了第一个和最后一个字符。试着用这个:

var regex = new RegExp($("#m"+id).val().slice(1, -1));

答案 1 :(得分:0)

尝试:

var regex = new RegExp($("#m"+id).val())

答案 2 :(得分:0)

开头和结尾的斜杠仅在正则表达式文字时使用。删除它们以获得实际的正则表达式,然后您可以使用new RegExp(str)将字符串转换为正则表达式对象。