2013-01-16 68 views
0

:我收到錯誤,當我運行下面::「是不是一個函數」以純的JavaScript

var arg_regex = 'myregex:/^[:a-z0-9\s!\\\/]+$/i'; 

regex_patt = arg_regex.replace(/^myregex:/,''); 

if(regex_patt.test(stringtocheck)){ 
//good 
} else { 
//bad 
} 

錯誤:

regex_patt.test is not a function 

pl幫助。無法確定它爲什麼會失敗。

+5

'regex_patt'仍然是一個字符串,它不是一個正則表達式。 –

回答

1

菲利克斯說什麼:

regex_string = arg_regex.split('myregex:/').join('').split('/i').join(''); 
regex_patt = new RegExp(regex_string); 

RegExp對象必須從字符串構造第一。

在上例中,您將替換靜態字符串,因此您可以使用string.replace('staticTextToRemove','')或使用上面顯示的splitjoin

我聽說split().join()稍微有點高性能......並且它是一個巧妙的技巧。

+3

您必須替換更多......離開'/.../ i'將導致意外的行爲(即字符是從字面上得到的)。 –

+0

truf。編輯修復 –

+0

這個例子中的正則表達式會發生什麼? –

0

嘗試添加此行讓regex_patt是一個對象:

regex_patt = eval(regex_patt); 
相關問題