我正在使用正则表达式来以某种角度验证表单控件,该控件将几种模式连接到表单控件的验证器中。
这是与表单相关的我组件的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,只要它具有偶数个字符,都可以使用。为什么只有奇数个字符才能正确验证,而奇数个字符却不能通过?