Jquery-将字符串转换为reg exp对象

Jquery - Convert string to reg exp object

本文关键字:reg exp 对象 转换 字符串 Jquery-      更新时间:2023-09-26

我的正则表达式是/^([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()

然后用CCD_ 2进行测试。

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

var regex = $("#m"+id).val() // (my hidden element)

那么它就不起作用了。我也尝试过使用新的RegExp来分配它,但也不起作用。我认为它这样做是因为它将值作为字符串从$("#m"+id).val()返回(我在这里得到了正确的值),但不确定要将其解析为什么。

如有任何帮助,我们将不胜感激。

如果你想从字符串构建regexp,那么使用regexp类的Constructor,它使用没有斜杠的字符串,所以你应该删除它们。.slice(1, -1)删除第一个和最后一个字符。尝试使用这个:

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

尝试:

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

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