首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用angular 5验证网站地址

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

Stack Overflow用户
提问于 2019-03-04 12:56:38
回答 1查看 7.3K关注 0票数 3

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

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2019-03-04 13:00:23

要在反应式表单中验证网址/网址,可以遵循以下方法,对表单控件使用Validators.pattern

代码语言:javascript
复制
const urlRegex = '(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?';

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

要在模板驱动的表单中验证URL / Web地址,您应该创建一个自定义Validator指令,如下所示

代码语言:javascript
复制
@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:

代码语言:javascript
复制
<input  type="url" name="url" id="url" ngModel appPattern="(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?">
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54976847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档