1

ユーザーがウィンドウの幅を入力する必要があるフィールドがあります。16.75 から 48 の間で、.25 刻みである必要があります (したがって、.00、.25、.50、.75 で終わる必要があります)。番号 31.25 で正規表現をテストするために次のことを試みましたが、すべて false を返します。私はインターネットを荒らしましたが、私のような正規表現の初心者にはあまり助けが見つかりません。誰かがこれの正規表現を手伝ってくれますか?

フィールドは次のとおりです。

<input type="text" id="windowWidth" onchange="basePrice()">

JS は次のとおりです。

function basePrice()
{
    var windowWidth = document.getElementById("windowWidth").value;
    var windowHeight = document.getElementById("windowHeight").value;

    if (windowWidth != "" && windowWidth > 16.75 && windowWidth < 48)
    {
         alert(/^\d{2}\.[00]$/.test(windowWidth));
         alert(/^\d{2}\.[25]$/.test(windowWidth));
         alert(/^\d{2}\.[50]$/.test(windowWidth));
         alert(/^\d{2}\.[75]$/.test(windowWidth));
    }
    else
    {
         alert("error");
         exit;
    }
}
4

5 に答える 5

3

正規表現の文字クラスに使用される[とを削除します。]

alert(/^\d{2}\.(?:00|25|50|75)$/.test(windowWidth));

例:[00]一致リテラル 0 または 0 を意味します

OR[25]はマッチ 2 または 5 を意味します

于 2013-10-23T20:56:28.380 に答える
2

おそらくそれらを組み合わせて、範囲内にあるかどうかをテストし、次の正規表現を使用できます。

/^\d{2}\.(00|25|50|75)$/
于 2013-10-23T20:56:34.230 に答える
2

これには正規表現は必要ありません。単純に数式を使用できます。

var n = 35.23;

n >= 16.75 && n <= 48 && !(n % .25); //false

n = 35.25;

n >= 16.75 && n <= 48 && !(n % .25); //true
于 2013-10-23T21:07:36.303 に答える
1

HTML 5 入力属性を使用できる場合は、これを試すことができます (正規表現なし):

<input type="number" id="windowWidth" onchange="basePrice()" min="16.75" max="48" step="0.25">

これにより、最小値と最大値が適用され、上矢印または下矢印をクリックすると 0.25 ずつ変化します。

于 2013-10-23T21:05:00.433 に答える
1

これは、おそらくより効率的で面倒でない、正規表現以外の方法です。

var has25decimal = (windowWidth * 100) % 25 == 0

(%モジュロ) は、数値を 25 で割った余りを示します。それが 0 の場合、数値は 25 で割り切れます。

于 2013-10-23T21:01:08.863 に答える