我將一個URL傳遞給需要在正則表達式中插入新元素的代碼塊。很確定正則表達式是有效的,代碼似乎是正確的,但無論我似乎無法執行匹配正則表達式!javascript正則表達式在表達式中插入新元素
//** Incoming url's
//** url e.g. api/223344
//** api/11aa/page/2017
//** Need to match to the following
//** dir/api/12ab/page/1999
//** Hence the need to add dir at the front
var url = req.url;
//** pass in: /^\/api\/([a-zA-Z0-9-_~ %]+)(?:\/page\/([a-zA-Z0-9-_~ %]+))?$/
var re = myregex.toString();
//** Insert dir into regex: /^dir\/api\/([a-zA-Z0-9-_~ %]+)(?:\/page\/([a-zA-Z0-9-_~ %]+))?$/
var regVar = re.substr(0, 2) + 'dir' + re.substr(2);
var matchedData = url.match(regVar);
matchedData === null ? console.log('NO') : console.log('Yay');
我希望我只是想念明顯,但任何人都可以看到爲什麼我不能匹配,總是返回NO?
感謝
因爲你把「目錄」進入組合來匹配您的網址您正則表達式不起作用基於關閉您的評論值/正則表達式,但它並沒有在您的網址例子存在。所以......你究竟想在這裏完成什麼? –
除此之外,將字符串化的正則表達式對象傳遞給'.match()'不會像您期望的那樣工作。例如''foo「.match(」。*「)'會返回」foo「,但是'var x = /foo/.toString(); 「foo」.match(x)''返回'null',因爲你傳遞了「/.*/」(注意到分隔符),'.match()'希望在那一點找到文字'/'字符 –
是的,對於更多關於大腦轉儲的問題,更不用說了。 – TheTechy