Javascript 如何从textarea值提取URL
我有一个textarea,我如何才能从该textarea值中提取url。url可以是随机的多个url。我尝试了下面的方法,但是我面临着下面的问题-Javascript 如何从textarea值提取URL,javascript,angular,Javascript,Angular,我有一个textarea,我如何才能从该textarea值中提取url。url可以是随机的多个url。我尝试了下面的方法,但是我面临着下面的问题- 如果我添加多个新行(shift+enter),则正则表达式不起作用。例如:再添加两到三个新行 如果我添加像1这样的url,2. 则它不会提取url 如果我在写入一些文本后添加url,例如:(此处为新文本) 如果我在连字符后添加url,例如:(此处为新文本- 问题-如何以这样的格式从textarea值中提取url [”https://www.googl
urlChecker(值:字符串){
设urlRegex=newregexp(([a-zA-Z0-9]+:/)([a-zA-Z0-9+:[a-zA-Z0-9+])([a-zA-Z0-9.-]+\.[a-zA-z]{2,4})(:[0-9]+)([^])+);
让urlWithinText:string='';
让URL:Array=[];
if(值!=''&&urlRegex.test(值)){
让matchedIfUrl=urlRegex.exec(值);
if(matchedIfUrl!=null&&matchedIfUrl!=未定义){
urlWithinText=matchedIfUrl[0]。替换(/^(\s*)|(\s*)$/g',)。替换(/\s+/g',,'))
URL=urlWithinText.split(',');
console.log(urlWithinText);
}
}
}
Javascript有一个内置函数:match(regExpPattern)可以找到匹配url的正则表达式: 需要注意的重要事项是正则表达式末尾的
igm
,它们是修饰符/i
执行不区分大小写的匹配,/g
执行全局匹配,即它不会在一次匹配时停止,/m
执行多行匹配,这似乎是您的问题
您还可以使用String.match()
将字符串与正则表达式进行匹配,并将所有值返回给您
let res = s.match(/https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}/igm);
console.log(res); //["http://google.com", "https://facebook.com"]
/https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}/igm
let res = s.match(/https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}/igm);
console.log(res); //["http://google.com", "https://facebook.com"]