Regex 在在线正则表达式测试程序中工作时,正则表达式不在Angular Validators.pattern()中工作
我已经在Regex101.com上编写并严格测试了一个regex,但是当实现到我的formcontrolvalidators.pattern方法中时,它显示出意外的行为 这是要邮寄的包裹的宽度输入。仅限正值,最大值为小数点后2位,最小值为(0.01),最大值稍后将根据API响应进行测试(无关)Regex 在在线正则表达式测试程序中工作时,正则表达式不在Angular Validators.pattern()中工作,regex,angular,typescript,Regex,Angular,Typescript,我已经在Regex101.com上编写并严格测试了一个regex,但是当实现到我的formcontrolvalidators.pattern方法中时,它显示出意外的行为 这是要邮寄的包裹的宽度输入。仅限正值,最大值为小数点后2位,最小值为(0.01),最大值稍后将根据API响应进行测试(无关) 包验证消息={ “最大宽度”:[ {类型:'required',消息:'Width is required'.}, {类型:'pattern',消息:'Invalid Width'.} ] }; {{
包验证消息={
“最大宽度”:[
{类型:'required',消息:'Width is required'.},
{类型:'pattern',消息:'Invalid Width'.}
]
};
{{validation.message}
下面的屏幕截图说明了我在Regex101.com上的测试;您可以看到所有应该通过和失败的场景。
但是,正如您在这里看到的,任何多位数的值都不符合模式,这与上面的预期行为相反
使用以下修复程序:
Validators.pattern(/^\+?(?:[1-9]\d*(?:\.\d{1,2})?|0\.(?:[1-9]\d?|\d[1-9]))$/)
这个
确保:
- 将正则表达式定义为正则表达式文本(不是字符串,
不应使用任何引号括起来)/…/
- 如果使用字符串模式,请确保对反斜杠进行双转义,然后不需要在两端使用
和^
,因为它们将自动添加$
Validators.pattern("\\+?(?:[1-9]\\d*(?:\\.\\d{1,2})?|0\\.(?:[1-9]\\d?|\\d[1-9]))")
验证程序模式(/^([+]?([1-9]\d*(\.\d{1,2}))\0\.([1-9]\d?)(\d[1-9]))$/)试试这个。这个很有魅力。等我长大了,我想成为和你一样强大的向导!
Validators.pattern(/^\+?(?:[1-9]\d*(?:\.\d{1,2})?|0\.(?:[1-9]\d?|\d[1-9]))$/)
Validators.pattern("\\+?(?:[1-9]\\d*(?:\\.\\d{1,2})?|0\\.(?:[1-9]\\d?|\\d[1-9]))")