Javascript 如何从textarea值提取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

我有一个textarea,我如何才能从该textarea值中提取url。url可以是随机的多个url。我尝试了下面的方法,但是我面临着下面的问题-

  • 如果我添加多个新行(shift+enter),则正则表达式不起作用。例如:再添加两到三个新行
  • 如果我添加像1这样的url,2. 则它不会提取url
  • 如果我在写入一些文本后添加url,例如:(此处为新文本)
  • 如果我在连字符后添加url,例如:(此处为新文本-
  • 问题-如何以这样的格式从textarea值中提取url

    [”https://www.google.com","https://www.facebook.com","http://www.test.co","http://www.news.co.in“,]

    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"]