2012-09-04 27 views
0

我的正則表達式是/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/和在HTML我與設定爲上述圖案Jquery的 - 將字符串轉換爲章第EXP對象

當我做到這一點的元素的值添加它作爲一個隱藏的元素:

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()(我得到正確的值返回這裏)的字符串返回值,但不知道要解析它。

任何幫助,將不勝感激。

回答

1

如果您想從字符串構建正則表達式,然後使用RegExp類的構造函數,它將採用不帶斜槓的字符串,因此應該將其刪除。 .slice(1, -1)刪除第一個和最後一個文字記錄器。嘗試使用這樣的:

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

工程很好,thanx如此之多。 – user1451517

0

嘗試:

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

在開頭和結尾的斜槓只用來當它是文字正則表達式。刪除它們以獲得實際的正則表達式,然後可以使用new RegExp(str)將字符串轉換爲正則表達式對象。