2

したがって、ユーザーがカスタム幅をピクセルまたはパーセントとして定義できる関数があります。

問題は、彼らが提供する数の半分を取得する必要があることです。これが私がやろうとしていることの例です:

ユーザー入力----------期待される結果

50%            25%
300px          150px

どんな助けでも大歓迎です!

4

2 に答える 2

3

おそらく最初に入力を検証する必要がありますが、これは機能します。

parseInt(str) / 2 + str.match(/(%|px)$/)[0]

%検証を行わないと、入力がor px(can't do )で終わらない場合、エラーがスローされますnull[0]。代わりに、欠落または認識されていないユニットをデフォルトとして扱いたい場合は%、次のようにすることができます。

parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]
于 2013-03-01T18:49:19.097 に答える
1

String.replaceコールバックと組み合わせて正規表現ベースを使用します。

"50px".replace(/(\d+)(%|px)/, function (_, value, unit) { 
    return String(value / 2) + unit; 
});
// returns 25px
于 2013-03-01T18:49:30.487 に答える