Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何阻止用户在文本框中输入URL_Javascript_Angular - Fatal编程技术网

Javascript 如何阻止用户在文本框中输入URL

Javascript 如何阻止用户在文本框中输入URL,javascript,angular,Javascript,Angular,我使用Angular 2,我想限制用户在文本框中输入URL和链接。 我们可以使用正则表达式吗?您可以使用指令监视文本框中的输入。该指令可以使用正则表达式检查当前输入是否为URL。这里有一个例子 import { Directive, HostListener, ElementRef } from '@angular/core'; @Directive({ selector: '[appUrlBlocker]' }) export class UrlBlockerDirective {

我使用Angular 2,我想限制用户在文本框中输入URL和链接。
我们可以使用正则表达式吗?

您可以使用指令监视文本框中的输入。该指令可以使用正则表达式检查当前输入是否为URL。这里有一个例子

import { Directive, HostListener, ElementRef } from '@angular/core';

@Directive({
  selector: '[appUrlBlocker]'
})
export class UrlBlockerDirective {
  constructor(private el: ElementRef) {}

  expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
  regex = new RegExp(this.expression);

  @HostListener('keyup') check() {
    if (this.el.nativeElement.value.match(this.regex)) {
      alert('You have entered a URL!');
      // Remove entered content
      this.el.nativeElement.value = '';
    } else {
      console.log('Does not match');
    }
  }
}
然后像这样在你的输入上使用它

<input appUrlBlocker type="text" placeholder="No URLs allowed" />


没有AngularJS 2来澄清@Aamirkan的评论-AngularJS指的是1.x版,AngularJS指的是2.x版及以上版本(是的,这是一个令人困惑的命名约定)。@Aamirkan是的,我使用的是angular 2.0版。您可以使用一个指令检查任何输入是否为URL。您可以使用正则表达式进行此操作。查看:@AamirKhan我使用了这个模式=“[-a-zA-Z0-9@:%.\+~\=]{2256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%.\+.\\+.~\?&/=]*),但它仍然接受所有的评论