如何将Angular 4表单验证器中的两个正则表达式合并为一个
没问题,我来帮你把这两个正则表达式合并成一个,让你的Angular 4表单验证器代码更简洁高效~
合并正则表达式优化表单验证器
首先咱们先明确你原本的两个验证规则:
- 禁止输入以数字开头的内容
- 禁止输入包含字母(不区分大小写)和数字以外的字符
这两个规则可以通过正则的逻辑或(|)整合为一个表达式,同时还能优化写法去掉不必要的全局标记(g),因为验证只需要匹配到一次违规情况就足够了。
合并后的正则表达式
/^[0-9]|[^A-Z0-9]/i
^[0-9]:匹配以数字开头的场景|:表示“或”的逻辑关系,连接两个验证条件[^A-Z0-9]:匹配任何非字母、非数字的字符i:不区分大小写模式,替代原有的gi(全局标记在这里完全没必要,反而会增加不必要的计算)
修改后的验证器代码
forbiddenValidator(control: FormControl) { const login = control.value as string; if (login && login.length > 0) { // 使用合并后的正则做匹配判断,用test()性能更优 if (/^[0-9]|[^A-Z0-9]/i.test(login)) { return { forbidden: true }; } } return null; }
这里用test()方法替代了原来的match(),因为我们只需要知道是否存在违规匹配,不需要获取具体的匹配结果,test()的执行效率会更高哦。
内容的提问来源于stack exchange,提问作者Саске
相关产品推荐
相关产品推荐

