2016-07-31 34 views
1

我有下面的代碼,檢查網址是否含有一定的模式:使用正則表達式,而無需創建一個正則表達式對象 - JavaScript的

var url = "https://www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=regex%20javascript"; 
var patt = new RegExp('https?:\/\/[^/]+\.google\.[a-z.]+\/((search[?#])|(webhp[?#])|([?#])).*q='); 
var check = patt.test(url); 
alert(check); 

上述正則表達式將無法在不使用new RegExp()工作。如何在不創建正則表達式對象的情況下使用相同的正則表達式。例如,這樣的事情(這似乎不工作):

var url = "https://www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=regex%20javascript"; 
var check = ('https?:\/\/[^/]+\.google\.[a-z.]+\/((search[?#])|(webhp[?#])|([?#])).*q=').test(url); 
alert(check); 
+3

是什麼讓你覺得你可以做到這一點,而無需創建正則表達式對象?你爲什麼想這樣做? – Tomalak

回答

1

你是一個正則表達式的文字,像這樣

var check = /https?:\/\/[^/]+\.google\.[a-z.]+\/((search[?#])|(webhp[?#])|([?#])).*q=/.test(url) 

這不過是隻語法糖,並且不釋放你的創建實際的RegEx對象

+0

這也是一個正則表達式對象。 – Tomalak

+0

我知道,但也許這就是提問者的意思 - 我無法想象任何其他含義:)當然,我的猜測可能是錯的 – DAXaholic

+1

是的,這就是爲什麼如果OP會在我的評論中回答這個問題會很有趣。 :) – Tomalak