我应该如何使用RegExp来获得我想要的JavaScript?

问题描述:

我试了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?:\/\/.+)/有一个想法。在第一组括号中捕获文本,并在第二组括号中捕获链接。不知道为什么你的正则表达式是如此复杂,但让我知道,也许我可以改善草拟的正则表达式 –

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

例如为:

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

我使用了新的正则表达式,它看起来不错,但仍然会出现新的问题。 – tommychoo