如何在html文本框中只允许4位数字?
我试图限制HTML文本框中的用户只插入4位数字0-9 我尝试了以下方法,但它只允许使用两位数如何在html文本框中只允许4位数字?,html,regex,Html,Regex,我试图限制HTML文本框中的用户只插入4位数字0-9 我尝试了以下方法,但它只允许使用两位数 <input type="text" name="pincode" maxlength="4" id="pin" pattern="^0[1-9]|[1-9]\d$" required/> 如下图所示更改您的模式 pattern = "^[0-9]{4}$" 重复量词{4}应该准确地重复前面的标记4次。更改您的正则表达式,如下所示: pattern="\d{4}" # allows
<input type="text" name="pincode" maxlength="4" id="pin" pattern="^0[1-9]|[1-9]\d$" required/>
如下图所示更改您的模式
pattern = "^[0-9]{4}$"
重复量词
{4}
应该准确地重复前面的标记4次。更改您的正则表达式,如下所示:
pattern="\d{4}"
# allows numbers from 0000-9999
pattern="[1-9][0-9]{3}"
# from 1000-9999
类似于{1,4}
的模式将允许数字最多为4位,类似于{x}
的模式将位数固定为x倍
Edit:正如@Tushar指出的,以前的regex[1-9]{4}
是错误的,因为它不允许任何零。让我澄清一下:任何^[0-9]{4}$
或^\d{4}$
都是有效的regexp,将值限制为4位。但是,默认情况下,值已被锚定:
用于此属性的正则表达式语言与JavaScript中使用的正则表达式语言相同,不同之处在于,模式属性与整个值相匹配,而不仅仅是与任何子集相匹配(有点,好像它在模式的开头暗示了一个^(?:
),在结尾暗示了一个)$
)
因此,只需使用pattern=“\d{4}”
:
输入:有效{
颜色:绿色;
}
输入:无效{
颜色:红色;
}
我已经解决了这个问题。以下脚本在文本字段中仅占4位数字
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Digit in html form</title>
</head>
<body>
<input name="myInput_DRS"
onkeypress="return isNumeric(event)"
oninput="maxLengthCheck(this)"
type = "number"
maxlength = "4"
min = "1"
max = "9999" />
<script>
function maxLengthCheck(object) {
if (object.value.length > object.maxLength)
object.value = object.value.slice(0, object.maxLength)
}
function isNumeric (evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode (key);
var regex = /[0-9]|\./;
if ( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
</script>
</body>
</html>
html格式的数字
函数maxLengthCheck(对象){
if(object.value.length>object.maxLength)
object.value=object.value.slice(0,object.maxLength)
}
函数为数值型(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
key=String.fromCharCode(key);
var regex=/[0-9]\./;
如果(!正则表达式测试(键)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}
有关HTML的更多基本问题,请访问。请尝试添加以下内容:
<input type="text"
maxlength="7"
onkeypress='return event.charCode >= 48 && event.charCode <= 57'
required
/>
允许0000-9999之间的数字
pattern="[1-9][0-9]{3}"
允许1000-9999之间的数字
类似于{1,4}
的模式将允许1到4位数字。类似于{x}
的模式将位数固定为x
次。尝试pattern=“\d{4}”
。无需使用锚定,因为模式属性在默认情况下是锚定的。可能type=“number”maxlength=“4”
:-?@lvaroGonzález它不会阻止用户输入非数字字符。另外,maxlength
将仅限制输入超过4个字符。因此,输入0,1,2,3个字符是有效的。这里我想限制用户只输入4位数字。@Tushar是的,您只会得到一个验证错误。不过,这就是纯HTML的全部功能。正如斯特里比雪夫在回答中所解释的,当使用pattern
属性时,您不需要锚定。另外,第二个正则表达式^[1-9]{4}$
与数字1111-9999
不匹配。它匹配1111到9999之间的数字,不包含任何再次出错的零<代码>1[0-9]{3}
将匹配1000-1999
。您正在查找[1-9][0-9]{3}
。如果您想阅读,请从开始。测试regex在线使用。这是最好的答案。同意。为什么要用正则表达式的东西来重新发明轮子?为numpad数字加上| | charCode=80
pattern="[1-9][0-9]{3}"