Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在html文本框中只允许4位数字?_Html_Regex - Fatal编程技术网

如何在html文本框中只允许4位数字?

如何在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

我试图限制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 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}"