Regex 角度正则表达式指令
我试图在Angular 7中创建一个Angular指令,通过输入属性传入RegExp,并且不允许用户键入与RegExp不匹配的字符 这在一定程度上是可行的,但我试图验证的RegExp似乎在测试中失败了。性格 在我的HTML中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测试
<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));
}
}