Javascript 如何检测文本区域中的URL并对其进行验证?

Javascript 如何检测文本区域中的URL并对其进行验证?,javascript,angular,Javascript,Angular,如何检测(在文本区域中)文本区域值中是否存在任何URL?我希望在整个条目中检测URL,例如在每个空格后键入的单词上运行检查,或者在文本区域中粘贴任何内容 我也可以检查它是否是有效的URL。因为如果它是有效的,那么我将基于该有效url进行api调用 先谢谢你 <textarea (keyup)=onKeyUp($event) [(ngModel)]="textval" (paste)="onPaste($event)"></textarea

如何检测(在文本区域中)文本区域值中是否存在任何URL?我希望在整个条目中检测URL,例如在每个空格后键入的单词上运行检查,或者在文本区域中粘贴任何内容

我也可以检查它是否是有效的URL。因为如果它是有效的,那么我将基于该有效url进行api调用

先谢谢你

<textarea (keyup)=onKeyUp($event) [(ngModel)]="textval" (paste)="onPaste($event)"></textarea>

onKeyUp(event){
  //check if any url present in value on key up
}


onPaste(event : any){
  ////check if any url present in value if pasting anything
}

onKeyUp(事件){
//检查键向上时值中是否存在任何url
}
onPaste(事件:任意){
////如果粘贴任何内容,请检查值中是否存在任何url
}

您可以使用
路由器
获取URL并将其映射到您的ngModel变量textval,并进行模式验证。如果这是有效输入,则发送它。这就是在组件和模式验证中使用路由器的方式

textval: any;

constructor(private currentRoute: Router) { }

ngOnInit() {
this.textval = this.currentRoute.url;
}
验证有效URL的RegExp是(这是一个示例,您可以根据需要更改它)

在文本区域使用此选项

<textarea [pattern]="/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/" (keyup)=onKeyUp($event) [(ngModel)]="textval" (paste)="onPaste($event)"></textarea>

如果从angular使用反应式表单,则可以添加正则表达式作为验证器

const reg = '(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?';

this.form = fb.group({

  url: ['', [Validators.required, Validators.pattern(reg)]]

})
const reg = '(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?';

this.form = fb.group({

  url: ['', [Validators.required, Validators.pattern(reg)]]

})