英国通貨(すなわち、£13.00、£9,999.99、および£12,333,333.02)と一致する正規表現の後には、負の(£2.17)またはゼロの値または0)。英国の通貨の正規表現JavaScriptの
私は自分自身を作成しようとしましたが、私は正しいミッドレンジに入っています!
大変助かりました。
ありがとうございます!
英国通貨(すなわち、£13.00、£9,999.99、および£12,333,333.02)と一致する正規表現の後には、負の(£2.17)またはゼロの値または0)。英国の通貨の正規表現JavaScriptの
私は自分自身を作成しようとしましたが、私は正しいミッドレンジに入っています!
大変助かりました。
ありがとうございます!
これは(もほとんどが...)
/^£?[1-9]{1,3}(,\d{3})*(\.\d{2})?$/
が負または他の文字が文字列ではなく、カンマが使用されることを前提として確認するために、^と$を活用し、それをやります。ポンド記号とペンスはオプションです。
編集:上記の£0.01とは一致しません指摘されています:あなたは非ゼロので、[1-9]
更新と最初の\ dを置き換えると述べ実現しました。以下の改善はになりますが、ここでは、[1-9] /最初とそれ以降をテストするほうがかなり複雑かもしれませんが、それをベンチマークしませんでした。
/^£?(([1-9]{1,3}(,\d{3})*(\.\d{2})?)|(0\.[1-9]\d)|(0\.0[1-9]))$/
簡単な説明:
(上記でゼロ)ペンスの複数のフラクションあなたはあまり効率的ではそれがなる正規表現に追加する必要。
/^£\d{1,3}(,\d{3})*(\.\d{2})?$/
形式を検証するために、そして
/[1-9]/
は、少なくとも1桁がゼロでないことを確認する:
あなたはちょうど2つのパスを作ることができます。
これはもちろん、ベンチマーク情報のためにannukataという、1回のパスで行うよりも効率的ではありませんが、最初の実装では「あなたが望むものを言う」だけで開発時間を大幅に短縮できます。このように、UNIX/Linuxでは
私はそれをベンチマークしました。プレチェックを行う前に100Kの失敗したマッチが必要でしたが、かなり安くなりました。それは論理的/可読性の問題に値するものではありません。 – annakata
は、それがJavaScriptのファイルの '£' 記号を入力することは必ずしも可能ではありませんので、私はその16進数表現を使用する傾向がある:
/^ \ XA3 \ D {? 1,3}→([、] \ d {3} | \ d)*?([。] \ d {1,2})?$/
これは、私が遭遇した英国の通貨額表現のすべての組み合わせの世話をしているようです。
パーフェクト。非常にありがとう! jqueryバリデーターを使用している人のために:btw: 'jQuery.validator.addMethod( 'currency'、function(value、element){ \t \t \t var result = value.match(/^\ xA3?\ d {1,3}?( [;] \ d {3} \ d)*?([。] \ d {1,2})?$ /); \t \t \t console.log( "val currency" + result); \t \t \t返品結果; \t \t}「金額をGBPで指定してください」; – BaronVonKaneHoffen
約0.50?それは一致しません... –
@Tim - よく見つかった。修正されました。 – annakata
ブリリアント。ありがとう - それは私にそれを考え出す年齢を取っていただろう。 – Sniffer