Javascript 如何以有效形式仅输入3位数字?

Javascript 如何以有效形式仅输入3位数字?,javascript,angular,Javascript,Angular,您能告诉我当用户只输入3位数字(不是alpha)时如何验证表单,那么它是有效表单,否则无效。我尝试使用maxength和minlength但不起作用。这是我的代码 使用Validator.min和Validator.max cardname: ['', [Validators.required , Validators.min(100),Validators.max(999)]] 您将输入设置为“类型编号”,因此“最小长度”和“最大长度”将不起作用。您必须将其更改为文本,只需添加模式验证,例

您能告诉我当用户只输入3位数字(不是alpha)时如何验证表单,那么它是有效表单,否则无效。我尝试使用
maxength
minlength
但不起作用。这是我的代码


使用Validator.min和Validator.max

cardname: ['', [Validators.required , Validators.min(100),Validators.max(999)]]

您将输入设置为“类型编号”,因此“最小长度”和“最大长度”将不起作用。您必须将其更改为文本,只需添加模式验证,例如:

this.paymentForm = this.fb.group({
 cardname: [null, Validators.compose([Validators.required, Validators.minLength(3), 
 Validators.maxLength(3), Validators.pattern('[0-9]+')])],
});
我提供了您的示例,您可以查看:

太好了!但是,我们如何验证056这样的数字呢?作为提示,如果数字以0开头,这就不太可能(例如“007”),如果您想验证0XX,作为字符串,唯一的方法是使用regexp,但是您失去了本机限制的优势,即只允许用户输入数字,如果您想要数字,7与007相同,您可以使用最小值(0)。可能重复使用。。它将防止用户输入超过长度的数字。根据建议,您可以删除
验证器.minLength(3)
验证器.maxLength(3)
,然后将模式更改为“^[0-9]{3}$”@ChrisForrence,您可以做很多事情,当然,有时您需要更多地区分错误,而无需自定义有效的模式。这不是我的问题,所以我不知道他最后想要实现什么。所以我刚刚解决了他的问题,从这里他可以继续提高。谢谢你,伙计。
this.paymentForm = this.fb.group({
 cardname: [null, Validators.compose([Validators.required, Validators.minLength(3), 
 Validators.maxLength(3), Validators.pattern('[0-9]+')])],
});