2

単一の数値を収集する必要があるフィールドがあります

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

現在、値は 1 ~ 9999 のいずれでもかまいませんが、許可していない数字がいくつかあります。

15
21 
532 

この数字のいずれかが入力された場合にフォーム送信を強制的に失敗させるために使用できる正規表現パターンはありますか?

4

3 に答える 3

2

この正規表現を試してください:

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

よく見ると0、許可されていないリストに15, 21,の番号が含まれていることがわかります532。この理由は、正規表現が 1 ~ 4 桁の任意の数字に一致するためですが、範囲のみが必要です1-9999

この正規表現の実行中のデモについては、以下のリンクをクリックしてください。

正規表現 101

JSフィドル

于 2015-10-22T01:15:56.667 に答える
0

if , , value of , usingに設定type="submit"してみてくださいdisabled1521532input 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>

于 2015-10-22T01:22:49.653 に答える
-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)関数に渡された値が実数または整数以外の場合は失敗します (たとえば、'32 456' は失敗します)。
  • 渡された値は、不正な数値の配列に対してチェックされます。インデックス >= 0 がある場合、その数値は配列で見つかりました
于 2015-10-22T04:52:11.533 に答える