2016-07-06 44 views
0

我試了3個小時左右。我面臨使用JavaScript正則表達式的問題。我應該如何使用RegExp來獲得我想要的JavaScript?

我有一個字符串,如下

var str = 'test123↵↵http://www.youtube.com/watch?v=6W89sMJ25nI'; 

我用正則表達式獲得url比賽,但我也想,除了網址等文字。

var match = 'https://www.youtube.com/watch?v=6W89sMJ25nI'; 
var str = 'test123↵http://www.youtube.com/watch?v=6W89sMJ25nI'; 
var str2 = 'test123↵↵'; 

function checkStringContainUrl(s) { 
    var re = new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_][email protected])?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?"); 
    if(re.test(s)) { 
    console.log("url inside"); 
    console.log(re.exec(s)[1] + re.exec(s)[3] + re.exec(s)[5]); 

    // i also want to console 'test123↵↵' 

    } else { 
    console.log('no url inside'); 
    } 
} 

function checkLink(match) { 
    var re = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig; 
    var m = re.exec(match); 
    console.log(m[1]); 
} 

//checkLink(match); 
checkStringContainUrl(str); 

jsfiddle

+1

哦,感謝幫助我的問題編輯。 – tommychoo

+0

你必須問自己一些關於「其他」文本的問題嗎?是否總會有「↵」或某種分隔符?在這種情況下,您可以在執行正則表達式之前使用分割...可以是任何文本,還是您已經知道它不包含某些字符?它會始終在URL之前嗎?等等 – raphv

+0

嘗試這個正則表達式:/(.+)(https?:\/\/.+)/有一個想法。在第一組括號中捕獲文本,並在第二組括號中捕獲鏈接。不知道爲什麼你的正則表達式是如此複雜,但讓我知道,也許我可以改善草擬的正則表達式 –

回答

0

怎麼樣,一旦你孤立的URL,在文本中的 '' 代替它?

例如爲:

var url = re.exec(s)[1] + re.exec(s)[3] + re.exec(s)[5] 
console.log(s.replace(url,'')); 
+0

我使用了新的正則表達式,它看起來不錯,但仍然會出現新的問題。 – tommychoo

相關問題