Javascript Jquery-将字符串转换为reg exp对象
我的正则表达式是Javascript Jquery-将字符串转换为reg exp对象,javascript,jquery,html,regex,expression,Javascript,Jquery,Html,Regex,Expression,我的正则表达式是/^([a-zA-Z0-9])+([a-zA-Z0-9\.\u-])*@([a-zA-Z0-9\.\u-])+([a-zA-Z0-9\.\u-])+$/,在html中,我将其作为一个隐藏元素添加,并将元素的值设置为上述模式 当我这样做时: var regex=/^([a-zA-Z0-9])+([a-zA-Z0-9\.\u-])*@([a-zA-Z0-9\.\u-])+([a-zA-Z0-9\.\u-])+$/ var text=$(this.val() 然后使用regex进行测
/^([a-zA-Z0-9])+([a-zA-Z0-9\.\u-])*@([a-zA-Z0-9\.\u-])+([a-zA-Z0-9\.\u-])+$/
,在html中,我将其作为一个隐藏元素添加,并将元素的值设置为上述模式
当我这样做时:
var regex=/^([a-zA-Z0-9])+([a-zA-Z0-9\.\u-])*@([a-zA-Z0-9\.\u-])+([a-zA-Z0-9\.\u-])+$/
var text=$(this.val()
然后使用regex进行测试。test(text)
效果良好
但当我这样分配正则表达式时:
var regex = $("#m"+id).val() // (my hidden element)
那就不行了。我也尝试过使用新的RegExp分配它,但也不起作用。我认为它这样做是因为它将值作为字符串从$(“#m”+id).val()
(我在这里返回了正确的值),但不确定解析它的目的
任何帮助都将不胜感激。如果您想从字符串构建regexp,那么请使用regexp类的构造函数,它将使用不带斜杠的字符串,因此您应该删除它们
.slice(1,-1)
删除第一个和最后一个字符。尝试使用以下方法:
var regex = new RegExp($("#m"+id).val().slice(1, -1));
尝试:
只有当它是正则表达式文字时,才使用开头和结尾的斜杠。删除它们以获得实际的正则表达式,然后可以使用
newregexp(str)
将字符串转换为regex对象
var regex = new RegExp($("#m"+id).val())