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