angular - 如何使用angular 5验证网站地址

标签 angular url-validation

我想验证 angular 5 中的 url 不工作。

<input type="url" name="url" id="url" ngModel pattern="https?://.+">
<div *ngIf="url.errors && (url.dirty || url.touched)" class="alert alert-danger">

  <div [hidden]="!url.errors.pattern">
  </div>
</div>

最佳答案

要以 react 形式验证 URL/Web 地址,您可以按照以下方法对表单控件使用 Validators.pattern

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

 this.hospitalForm = this.fb.group({
   Website: ['', Validators.pattern(urlRegex)],
 });

要以模板驱动的形式验证 URL/Web 地址,您应该创建一个自定义验证器指令,如下所示

@Directive({
  selector: '[appPattern]',
  providers: [{provide: NG_VALIDATORS, useExisting: PatternValidatorDirective, multi: true}]
})
export class PatternValidatorDirective implements Validator {
  @Input('appPattern') pattern: string;

  validate(control: AbstractControl): {[key: string]: any} | null {
    return this.pattern ? this.patternValidator(new RegExp(this.pattern, 'i'))(control)
                              : null;
  }

 patternValidator(nameRe: RegExp): ValidatorFn {
   return (control: AbstractControl): {[key: string]: any} | null => {
           const regextest = nameRe.test(control.value);
           return (!regextest) ? {'apppattern': {value: control.value}} : null;
   };
  }
}

在您的输入中,您应该将 appUrl 与正则表达式一起使用:

<input  type="url" name="url" id="url" ngModel appPattern="(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?">

关于angular - 如何使用angular 5验证网站地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976847/

相关文章:

angular - 不确定的进度条无法正常工作

regex - 需要正则表达式来验证 URL 并支持 %20 和 ()

java - 如何在 Java 中验证允许通配符 (*, %) 的 URL(域)

typescript - Angular2 Forms 中的 TypeScript 编译问题

angular - 使用组件而不导入

javascript - 使用 Angular 2 响应式(Reactive)表单通过单个复选框提交多个值

angular - 在nebular开发的ngx-admin中将侧边栏更改为右侧

python - django URLValidator 产生虚假错误

java - 适用于所有方案的 Apache UrlValidator

java - Apache Commons UrlValidator - 配置为允许变音字符