JS正则表达式排除一些数字
JS Regex to exclude some numbers
我有一个字段需要收单号
<input type="text" patern="" name="number" required="required" />
现在值可以是 1-9999 之间的任何值,但是我有一些我不允许的数字,比如
15
21
532
如果输入了其中一个数字,是否可以使用正则表达式模式强制表单提交失败?
试试这个正则表达式:
/^(?!(?:15|21|532|0+)$)\d{1,4}$/
如果你仔细看,你会发现我在 15
、21
、532
的禁止列表中包含了数字 0
。这样做的原因是正则表达式匹配任何具有 1 到 4 位数字的数字,但您只需要范围 1-9999
.
单击下面的链接可查看此正则表达式的 运行 演示。
尝试将 type="submit"
设置为 disabled
如果 15
、21
、532
的 input type="number"
值,使用 String.prototype.match()
var input = document.querySelector("input[type=number]")
var label = document.querySelector("[for=number]");
input.oninput = function() {
var val = this.value;
var matches = ["15","21","532"];
var match = matches.indexOf(val) !== -1;
this.nextElementSibling.disabled = match;
this.style.color = match ? "red" : "inherit";
label.innerHTML = match ? "Invalid number: <mark style=color:red>"
+ val + "</mark>"
: "";
}
<form>
<input type="number" min="1" max="9999" pattern="" name="number" required="required" id="number" />
<input type="submit" /><br />
<label for="number"></label>
</form>
function isValidNumber(num){
if (isNaN(+num))
return false;
var cant_match = [ 15, 21, 532 ];
return !( cant_match.indexOf(+num) >= 0 );
}
// Example call
isValidNumber( document.querySelector("input[name=number]").value );
很简单:
如果传递给函数的值不是实数或整数,isNaN(+num)
会失败(例如,“32 456”会失败)
- 然后根据错误数字数组检查传递的值;如果有索引 >= 0,则在数组
中找到该数字
我有一个字段需要收单号
<input type="text" patern="" name="number" required="required" />
现在值可以是 1-9999 之间的任何值,但是我有一些我不允许的数字,比如
15
21
532
如果输入了其中一个数字,是否可以使用正则表达式模式强制表单提交失败?
试试这个正则表达式:
/^(?!(?:15|21|532|0+)$)\d{1,4}$/
如果你仔细看,你会发现我在 15
、21
、532
的禁止列表中包含了数字 0
。这样做的原因是正则表达式匹配任何具有 1 到 4 位数字的数字,但您只需要范围 1-9999
.
单击下面的链接可查看此正则表达式的 运行 演示。
尝试将 type="submit"
设置为 disabled
如果 15
、21
、532
的 input type="number"
值,使用 String.prototype.match()
var input = document.querySelector("input[type=number]")
var label = document.querySelector("[for=number]");
input.oninput = function() {
var val = this.value;
var matches = ["15","21","532"];
var match = matches.indexOf(val) !== -1;
this.nextElementSibling.disabled = match;
this.style.color = match ? "red" : "inherit";
label.innerHTML = match ? "Invalid number: <mark style=color:red>"
+ val + "</mark>"
: "";
}
<form>
<input type="number" min="1" max="9999" pattern="" name="number" required="required" id="number" />
<input type="submit" /><br />
<label for="number"></label>
</form>
function isValidNumber(num){
if (isNaN(+num))
return false;
var cant_match = [ 15, 21, 532 ];
return !( cant_match.indexOf(+num) >= 0 );
}
// Example call
isValidNumber( document.querySelector("input[name=number]").value );
很简单:
-
如果传递给函数的值不是实数或整数,
isNaN(+num)
会失败(例如,“32 456”会失败)- 然后根据错误数字数组检查传递的值;如果有索引 >= 0,则在数组 中找到该数字