Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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 角度正则表达式指令_Regex_Angular_Directive - Fatal编程技术网

Regex 角度正则表达式指令

Regex 角度正则表达式指令,regex,angular,directive,Regex,Angular,Directive,我试图在Angular 7中创建一个Angular指令,通过输入属性传入RegExp,并且不允许用户键入与RegExp不匹配的字符 这在一定程度上是可行的,但我试图验证的RegExp似乎在测试中失败了。性格 在我的HTML中 <input type="text" alphaNumeric="^(\d{1,3}|\d{0,3}\.\d{1,2})$">> RegExp应允许最多3位数字或最多3位数字和2位小数,即允许345或343.45。RexExp在RegExp测试

我试图在Angular 7中创建一个Angular指令,通过输入属性传入RegExp,并且不允许用户键入与RegExp不匹配的字符

这在一定程度上是可行的,但我试图验证的RegExp似乎在测试中失败了。性格

在我的HTML中

    <input type="text" alphaNumeric="^(\d{1,3}|\d{0,3}\.\d{1,2})$">> 
RegExp应允许最多3位数字或最多3位数字和2位小数,即允许345或343.45。RexExp在RegExp测试仪上独立工作

我看到的是它阻止了字母的输入,但也阻止了字母的输入。字符,所以您可以键入333,但不能键入33.45


我读到RegExp可以被转义,或者整个RegExp可以用/characters包装,我尝试了各种方法,但都无法实现。

将regex改为
^(\d{1,3}\d{0,3}\.\d{0,2})$
(最后只有1被0替换)。在您的情况下,当有人键入
时,它与正则表达式
\.\d{1,2}
还不匹配(因为正则表达式至少需要一个数字),因此圆点被擦除。

您可以共享正则表达式吗?如果可能,请添加一个正则表达式,我将尝试为它创建一个堆栈Blitz。您可以将问题标记为已回答,因此,人们会在问题列表中看到问题已得到解决
  @Input('alphaNumeric') pattern: string;

  // Listen for the input event to also handle copy and paste.
  @HostListener('input', ['$event.target.value'])
  onInput(value: string) {

    if (this.pattern && this.pattern !== '' ) { 

     let patternRegExp : RegExp = new RegExp(this.pattern, 'g');

     if (!patternRegExp.test(value)) {
          this.el.control.patchValue(value.slice(0, -1));  
     }
 }