Angular中如何在正则表达式内添加单引号(')的匹配规则?
地址字段正则单引号匹配修复方案
问题原因
现有校验规则无法匹配单引号,由三个问题导致:
- 正则字符串用单引号包裹,直接写入单引号会提前闭合字符串,触发语法错误
- 原代码中与号写为HTML转义实体
&,在TS/JS运行环境下无法识别为普通&字符 - 字符组内连字符未放在首尾位置,存在被解析为范围匹配符的潜在风险
修正代码
优先推荐用双引号包裹正则字符串,无需额外转义内部单引号,同时将连字符放在字符组末尾消除歧义,替换原有规则即可:
address: ['', [Validators.pattern("^[A-Za-z0-9 &@/#.'-]+$")]],
如果要保留单引号包裹正则的写法,对内部单引号加反斜杠转义即可:
address: ['', [Validators.pattern('^[A-Za-z0-9 &@/#.\'-]+$')]],
覆盖字符说明
修正后的正则可完整匹配预期所有合法字符:
- 大小写英文字母A-Z、a-z
- 0-9数字
- 特殊字符:点号
.、单引号'、连字符-、井号#、@、&、斜杠/、半角空格
补充说明:如果是在Angular HTML模板中编写表单校验规则,需要将&转义为
&、单引号转义为'使用。
内容的提问来源于stack exchange,提问作者Ayushi Gajpal
相关产品推荐
相关产品推荐

