如何限制输入类型
how to restrict input type
目前我正在尝试限制只能输入3个字母和2个数字的输入数据。它将在点击按钮后进行检查。我的错误代码:
component.html
<input type="text" name="test3" [(ngModel)]="test3"
onkeyup="this.value=this.value.replace(/[^\a-\z\A-\Z0-9]/g,'');">
<button (click)="checkNumber3(test3)">submit</button>
component.ts
checkNumber3(test3): void {
console.log(test3);
if (test3 !== test3.match(/([a-z])+/) * 2 || test3 !== test3.match(/([A-Z])+/) * 2
&& test3 !== test3.match(/([0-9])+/) * 3
) {
alert('only can input 2 letters plus 3 numbers');
} else {
alert('correct');
}
}
感谢您的帮助!
我认为你应该这样做:
if(test3.match(/([a-z])+/).length === 2 ||
test3.match(/([A-Z])+/).length === 2 &&
test3.match(/([0-9])+/).length === 3)
{
doStuff()
}
编辑(解释)
String.match returns 一组匹配项。所以得到它的长度会让你知道你的数据是否正确。
此外,正确的正则表达式是 /([a-z]])/g
并且符合逻辑 A-Z
和 0-9
使用 [maxlength] 和 [minlength] 是 component.html 文件来检查长度。
要检查 ts 文件中的数字和字母,请使用 ^\d{2}[a-zA-Z]{3}$ 这个正则表达式。
您应该像这样使用 split()
和 filter()
:
checkNumber3(test3): void {
console.log(test3);
if (test3.split("").filter(e => isNaN(e)).length > 2 || test3.split("").filter(e => typeof parseInt(e) == "number")) {
alert('only can input 2 letters plus 3 numbers');
} else {
alert('correct');
}
}
而不是 运行 对同一个字符串使用多个 RegEx 并创建一次性数组。您应该能够使用单个正则表达式和 test()
创建一个简单的验证函数。例如:
function validate(string) {
// two letters or three numbers
return /^([a-zA-Z]{2}|[0-9]{3})$/.test(string)
}
console.log(validate("Aa")) // true
console.log(validate("Aaa")) // false
console.log(validate("120")) // true
console.log(validate("1090")) // false
console.log(validate("1")) // false
console.log(validate("")) // false
console.log(validate("A3")) // false
您的 Javascript 块需要一些更改。试一试:
if (test3.match(/([A-z])/g).length === 2 && (test3.match(/([0-9])/g).length === 3)) {
alert('correct');
} else {
alert('only can input 2 letters plus 3 numbers');
}
你可以这样做!
<head>
<script type="text/javascript">
function checkIf_AlphaNum()
{
var regex1 = RegExp('^([a-zA-Z]){3}([0-9]){2}?$');
if(regex1.test(document.getElementById("txtnumber").value))
{
document.getElementById("msg_2_show").innerHTML="given string matched against pattern!";
document.getElementById("msg_2_show").style.color="#7CFC00";
//alert("given string matched against pattern!");
}
else {
document.getElementById("msg_2_show").innerHTML="invalid pattern!";
document.getElementById("msg_2_show").style.color="#B22222";
}
}
</script>
</head>
<body>
<h4 id="msg_2_show"></h4>
<form >
<label>Enter No.:</label>
<input type="text" id="txtnumber" name="txtnumber" />
<input type="button" value="Submit!" name="btnsubmit" onclick="checkIf_AlphaNum()"/>
</form>
</body>
</html>
在输入按键中添加您的校验码功能,如下面的代码
<input type="text" name="test3" [(ngModel)]="test3" (keypress)="checkNumber3(test3)"
onkeyup="this.value=this.value.replace(/[^\a-\z\A-\Z0-9]/g,'');">
<button (click)="checkNumber3(test3)">submit</button>
从这里查看 Angular 6 在线编辑器:
目前我正在尝试限制只能输入3个字母和2个数字的输入数据。它将在点击按钮后进行检查。我的错误代码:
component.html
<input type="text" name="test3" [(ngModel)]="test3"
onkeyup="this.value=this.value.replace(/[^\a-\z\A-\Z0-9]/g,'');">
<button (click)="checkNumber3(test3)">submit</button>
component.ts
checkNumber3(test3): void {
console.log(test3);
if (test3 !== test3.match(/([a-z])+/) * 2 || test3 !== test3.match(/([A-Z])+/) * 2
&& test3 !== test3.match(/([0-9])+/) * 3
) {
alert('only can input 2 letters plus 3 numbers');
} else {
alert('correct');
}
}
感谢您的帮助!
我认为你应该这样做:
if(test3.match(/([a-z])+/).length === 2 ||
test3.match(/([A-Z])+/).length === 2 &&
test3.match(/([0-9])+/).length === 3)
{
doStuff()
}
编辑(解释)
String.match returns 一组匹配项。所以得到它的长度会让你知道你的数据是否正确。
此外,正确的正则表达式是 /([a-z]])/g
并且符合逻辑 A-Z
和 0-9
使用 [maxlength] 和 [minlength] 是 component.html 文件来检查长度。
要检查 ts 文件中的数字和字母,请使用 ^\d{2}[a-zA-Z]{3}$ 这个正则表达式。
您应该像这样使用 split()
和 filter()
:
checkNumber3(test3): void {
console.log(test3);
if (test3.split("").filter(e => isNaN(e)).length > 2 || test3.split("").filter(e => typeof parseInt(e) == "number")) {
alert('only can input 2 letters plus 3 numbers');
} else {
alert('correct');
}
}
而不是 运行 对同一个字符串使用多个 RegEx 并创建一次性数组。您应该能够使用单个正则表达式和 test()
创建一个简单的验证函数。例如:
function validate(string) {
// two letters or three numbers
return /^([a-zA-Z]{2}|[0-9]{3})$/.test(string)
}
console.log(validate("Aa")) // true
console.log(validate("Aaa")) // false
console.log(validate("120")) // true
console.log(validate("1090")) // false
console.log(validate("1")) // false
console.log(validate("")) // false
console.log(validate("A3")) // false
您的 Javascript 块需要一些更改。试一试:
if (test3.match(/([A-z])/g).length === 2 && (test3.match(/([0-9])/g).length === 3)) {
alert('correct');
} else {
alert('only can input 2 letters plus 3 numbers');
}
你可以这样做!
<head>
<script type="text/javascript">
function checkIf_AlphaNum()
{
var regex1 = RegExp('^([a-zA-Z]){3}([0-9]){2}?$');
if(regex1.test(document.getElementById("txtnumber").value))
{
document.getElementById("msg_2_show").innerHTML="given string matched against pattern!";
document.getElementById("msg_2_show").style.color="#7CFC00";
//alert("given string matched against pattern!");
}
else {
document.getElementById("msg_2_show").innerHTML="invalid pattern!";
document.getElementById("msg_2_show").style.color="#B22222";
}
}
</script>
</head>
<body>
<h4 id="msg_2_show"></h4>
<form >
<label>Enter No.:</label>
<input type="text" id="txtnumber" name="txtnumber" />
<input type="button" value="Submit!" name="btnsubmit" onclick="checkIf_AlphaNum()"/>
</form>
</body>
</html>
在输入按键中添加您的校验码功能,如下面的代码
<input type="text" name="test3" [(ngModel)]="test3" (keypress)="checkNumber3(test3)"
onkeyup="this.value=this.value.replace(/[^\a-\z\A-\Z0-9]/g,'');">
<button (click)="checkNumber3(test3)">submit</button>
从这里查看 Angular 6 在线编辑器: