У меня есть приложение angular 8, и я хочу проверить правильность URL-адреса YouTube и URL-адреса Vimeo с шаблоном. Или труба?
Итак, у меня есть это:
<ng-container *ngIf="is('VideoDisplay')">
<iframe
*ngIf="videoUrl.value"
class="video-iframe"
type="text/html"
[src]="getVideoSafeUrl(videoUrl.value)"
frameborder="0"
allowfullscreen
></iframe>
<mat-form-field>
<input
matInput
type="url"
name="videoUrl"
ngModel
#videoUrl="ngModel"
placeholder="Url of video"
i18n-placeholder
pattern="^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+"
required
/>
<mat-error>
<app-element-edit-field-error
[errors]="videoUrl.errors"
></app-element-edit-field-error>
</mat-error>
</mat-form-field>
</ng-container>
Но это только для YouTube. Но я также хочу совместить это с фильмами Vimeo. Итак, у меня есть регулярное выражение для vimeo:
var re = /\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i;
Но как объединить эти два сейчас? И использовать это с трубой? Так что вы можете использовать его в каждом шаблоне?
Спасибо
Итак, я создал трубу примерно так:
export class VideoUrlPipe implements PipeTransform {
transform(value: any, args?: any): any {
const vimeoReg = new RegExp(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
const youtubeReg = ^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+;
return null;
}
}
У меня теперь она такая:
export class RegexConstants {
static readonly videoUrlsRegexConstant =
/((http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+)|(\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+))/g;
}