我的正则表达式为/^([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()
返回(我在这里返回正确的值),但不知道该怎么做解析它。
任何帮助都将不胜感激。
答案 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)
将字符串转换为正则表达式对象。