我在我的Angular项目中使用了Prettier,并尝试为表单验证器包含一个正则表达式模式。当我运行更漂亮的程序时,字符串发生了根本性的改变,使得模式验证功能失调,如下所示:
之前:
export const EmailVal: ScaffoldValidator = PatternVal(
"/^[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}$/"
);之后:
export const EmailVal: ScaffoldValidator = PatternVal(
"/^[0-9a-zA-Z]([-.w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+[a-zA-Z]{2,9}$/"
);我已经看过了更漂亮的文档,其中谈到了在单引号和双引号的上下文中更改转义,但断言其他转义将保持不变。我也浏览了我的tsLint.json,没有任何东西能作为我的源码。它确实将"Codelyzer“表示为规则集。有没有我可以禁用的设置来防止这种行为?
发布于 2020-05-28 23:12:35
您可以直接使用正则表达式(注意:没有引号-只有斜杠):
/^[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}$/;或者更正字符串转义(注意双反斜杠):
"/^[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9}$/";
^^ ^^ ^^ 考虑使用EsLint -它可以警告您以下情况(请参阅no-useless-escape rule):

https://stackoverflow.com/questions/62067961
复制相似问题