正则表达式模式应匹配长度不超过12个的所有字符时,仅匹配奇数个字符

时间:2019-04-09 17:01:30

标签: javascript regex angular

我正在使用正则表达式来以某种角度验证表单控件,该控件将几种模式连接到表单控件的验证器中。

这是与表单相关的我组件的TS。请忽略重复的\ w正则表达式,因为它是从旧系统转换而来的,我无法更改。但是,我确实需要确保所有这些正则表达式都可以验证同一字段。重要的部分是^(.{8,12})$

let regex = new RegExp('(^\\w\\w\\w \\w\\w\\w$)|(^(.{8,12})$)|(^\\w\\w\\w[,] \\w\\w\\w$)','g');
this.controls["regexInput"] = new FormControl(code.Value, Validators.pattern(regex));

这是我的html

<mat-form-field class="mat-inputs">
    <input matInput [name]='pattern' [formControlName]='regexInput'>
    <mat-error *ngIf='controls["regexInput"].hasError("pattern")'>Input does not match pattern.</mat-error>
</mat-form-field>

应该匹配的输入:

  • 123

  • 123abc123abc123abc123abc

  • 1234567

输入应有效:

1。)123 abc

2。)123,abc

3。)123456789

4。)123456789012

该格式可以正确验证除#3以外的所有字符,并且类似地,只要8个字符的长度<= 12,只要它具有偶数个字符,都可以使用。为什么只有奇数个字符才能正确验证,而奇数个字符却不能通过?

0 个答案:

没有答案