javascript - 接受 00.00,000 格式的 Angular 指令
问题描述
我有一个 Angular 指令,它应该只允许输入格式00.00,000
import { Directive, HostListener, ElementRef } from '@angular/core';
@Directive({
selector: '[appDecimalAmount]'
})
export class DecimalAmountDirective {
private regex: RegExp = new RegExp(/^\d*\,?\d{0,2}$/g);
private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Del', 'Delete'];
constructor(private el: ElementRef) { }
@HostListener('keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
const current: string = this.el.nativeElement.value;
const next: string = current.concat(event.key);
if (next && !String(next).match(this.regex)) {
event.preventDefault();
}
}
}
目前,我使用 regex /^\d*\,?\d{0,2}$/g
,但它不起作用,因为它只能帮助我处理带有 2 位小数的数字。
解决方案
要尊重格式00.00,000
,您可以使用以下内容:
private regex: RegExp = new RegExp(^\d*\.?\d{0,2}\,?\d{0,3}$/g);
推荐阅读
- c++ - 如何将调试信息附加到 LLVM Pass 中的指令中
- python - python imap 电子邮件收集器错误
- python - Django centos服务器没有收到请求
- asp.net-core - 如何避免在 ASP.NET Core MVC 中将我的视图组件 cshtml 命名为“Default.cshtml”?
- maxima - 千里马图自动保存
- java - 变音符号问题,从数据库java获取数据
- google-apps-script - 将 gdoc 转换为图像
- sublimetext3 - 命令面板中缺少命令
- python - 来自纯 SQL 查询的实例化模型类对象?
- sas - SAS 9.4 使用 IFN 函数结果