我有一个如下所示的文字
"Here is your result https://polo.felix.com/stat/content/table-1576073323.16.html Please click on the link to see more.."
现在我只想提取链接后面的文本
Please click on the link to see more..
现在,链接后可能没有任何文本,在这种情况下,我应该得到一个空字符串。
这就是我试图做的
message = "Here is your result https://polo.felix.com/stat/content/table-1576073323.16.html Please click on the link to see more.."
if(message.split('html')[1].trim() !== '') {
do_something()
}
但这不是很优雅,如果链接以html
以外的其他字符结尾,则将无法正常工作。
是否有regex
可以获取文本中url右边的内容(如果存在)或返回空字符串?
答案 0 :(得分:2)
您可以使用以下正则表达式(捕获组1的结果):
(?:https?:\/{2}\S+\s)(.*)
s = 'Here is your result https://polo.felix.com/stat/content/table-1576073323.16.html Please click on the link to see more..'
r = /(?:https?:\/{2}\S+\s)(.*)/
m = s.match(r)
if(m) console.log(m[1])
将以http://
或https://
开头的URL匹配到下一个空格(包括下一个空格),然后将字符串的其余部分捕获到捕获组中。
或者您可以在ECMA2018 +(V8引擎+)中使用以下正则表达式-请参阅后置断言 here的浏览器兼容性:
(?<=https?:\/{2}\S+\s).*
s = 'Here is your result https://polo.felix.com/stat/content/table-1576073323.16.html Please click on the link to see more..'
r = /(?<=https?:\/{2}\S+\s).*/
m = s.match(r)
if(m) console.log(m[0])
与以前的正则表达式相同,只是在后面使用正向后保证URL优先而不是匹配。正则表达式匹配项是URL后面字符串的其余部分。
答案 1 :(得分:1)
尝试一下。
var str = 'Here is your result https://polo.felix.com/stat/content/table-1576073323.16.html Please click on the link to see more..'
var expr = /https?:\/\/\S+(.*)/g
var match = expr.exec(str)
console.log(match[1])