Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在在线正则表达式测试程序中工作时,正则表达式不在Angular Validators.pattern()中工作_Regex_Angular_Typescript - Fatal编程技术网

Regex 在在线正则表达式测试程序中工作时,正则表达式不在Angular Validators.pattern()中工作

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'.} ] }; {{

我已经在Regex101.com上编写并严格测试了一个regex,但是当实现到我的formcontrolvalidators.pattern方法中时,它显示出意外的行为

这是要邮寄的包裹的宽度输入。仅限正值,最大值为小数点后2位,最小值为(0.01),最大值稍后将根据API响应进行测试(无关)

包验证消息={
“最大宽度”:[
{类型:'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]))")