我正在尝试验证使用表达式 ^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.] 提交的电子邮件输入+)\.([a-zA-Z]{2,5})$
但它抛出错误 Range out of order in character class at RegExp
。我如何使用该表达式进行验证
ngOnInit() {
// created FormGroup using FormBuilder
this.courseForm = this.fb.group({
username: [null, [Validators.required, Validators.pattern('^[a-z0-9_-]{3,16}$')]],
email: [null, [Validators.required, Validators.pattern('^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$')]],
address: (null),
select: (null)
});
最佳答案
该错误是由于删除了单个 \
而您的字符类的一部分看起来像 [_-.]
。这是一个无效的范围。
模式必须写成
'^([a-zA-Z0-9_.-]+)@([a-zA-Z0-9_.-]+)\\.([a-zA-Z]{2,5})$'
即:
- 双重转义
\
符号 - 将
-
移动到字符类的末尾以避免必须对其进行转义 - 注意:您也可以省略
^
和$
,因为模式会自动用^
和$
包装.
关于regex - RegExp 字符类中的范围乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428833/