JS Regex排除一些数字

时间:2015-10-22 01:11:30

标签: javascript regex html5-validation

我有一个字段,我需要收集单个号码

<input type="text" patern="" name="number" required="required" />

现在价值可以是1-9999但是我有一些我不允许的数字,比如说

15
21 
532 

如果输入了其中一个数字,我是否可以使用正则表达式强制表单提交失败?

3 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

/^(?!(?:15|21|532|0+)$)\d{1,4}$/

如果仔细查看,我会看到我在01521的不允许列表中添加了532号。这样做的原因是正则表达式匹配任何具有1到4位数的数字,但您只需要范围1-9999

点击下面的链接,查看此正则表达式的正在运行的演示。

Regex 101

JS Fiddle

答案 1 :(得分:0)

尝试使用type="submit" disabled,1521 532值设置input type="number"String.prototype.match()

&#13;
&#13;
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>" 
                           : "";
}
&#13;
<form>
  <input type="number" min="1" max="9999" pattern="" name="number" required="required" id="number" />
  <input type="submit" /><br />
  <label for="number"></label>
</form>
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

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)如果传递给该函数的值不是真实数字或整数(例如,&lt; 32 456&#39;失败),则会失败
  • 然后根据坏数组检查传递的值;如果索引&gt; = 0,则在数组
  • 中找到该数字