0

我的正则表达式是/^([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()(我在这里返回了正确的值),但不确定将其解析为什么。

任何帮助,将不胜感激。

4

3 回答 3

1

如果你想从字符串构建正则表达式,然后使用 RegExp 类的构造函数,它需要没有斜杠的字符串,所以你应该删除它们。.slice(1, -1)删除第一个和最后一个字符。尝试使用这个:

var regex = new RegExp($("#m"+id).val().slice(1, -1));
于 2012-09-04T06:14:09.343 回答
0

尝试:

var regex = new RegExp($("#m"+id).val())
于 2012-09-04T06:15:52.350 回答
0

The slashes at the beginning and the end are only used when it is a regex literal. Remove them to get the actual regular expression, then you can use new RegExp(str) to turn the string into a regex object.

于 2012-09-04T06:16:40.277 回答