2009-07-23 8 views
4

適切な正規表現または正規表現のセットが出てきても問題はありません。私が何をしたいか可能なクレジットカード番号を検出するためのJavascriptの正規表現

が検出され:

  • はcontineous実行を検出19
  • て長さ13の空白が点在桁のcontineous実行を検出19
  • て長さ13の数字のcontineous実行を検出します長さ13〜19のダッシュが散在している数字

基本的なビジネス要件は、ユーザーにクレジットカード番号iを入力した可能性があることを警告することですテキストフィールドであり、それらはしないでください(ただし、警告のみで、ハードエラーではありません)。テキストフィールドは複数の行にまたがる可能性があり、最大8kの長さ、CC#はどこにでも埋め込むことができます(複数の行に分割しない可能性があります)。私が必要とするすべて。私は実際の価値は必要ありません)。チェックデジットを検証する必要はありません。

長さのチェックは外部で行うことができます。つまり、一致のセットをループして空白/ダッシュをドロップしてから長さの比較を行います。

しかし... JavaScriptの正規表現は(だけではない右の「ヘッドスペース」で)私のあらゆる試みを破っているので、私はここにお願いしたい:)

感謝を考えました!

+1

これは本当に奇妙な要件です。だから、私が正しく理解していれば、フォームフィールドを持つWebページがあります。これらのフィールドはどれもクレジットカードのフィールドではありませんが、何らかの理由でクレジットカード番号が入力されていないことを確認したい場合は...これはユーザーがあなたのUI何らかの支払い情報を入力する必要があると考えていましたか? – NotMe

+0

@chirs lively:ちょっと右::)これはワークフローのシナリオであり、誰かが顧客のcc#を含むメモを追加することに決めました(私に間違って聞こえることはありませんが、どうしたらいいのでしょうか?)。だから...ポップアップ警告あなたは "それをやってはいけない"という人たちには完全に不合理な必要性のようには思わない。 – user53794

答えて

1

かなり単純な正規表現のようです。私はあなたの要件をもう少し厳格にしました。それは、 "1999-04-02 2009-12-09 2003-11-21"のような日付のリストと一致します。私はセクションが3から6のグループになり、それ自身が3から8の数字/ダッシュ/空白のグループであると仮定しました。これらの数字をかなり簡単に調整できます。

/[0-9]{13,19}|([0-9- ]{3,8}){3,6}/ 

私はこれがあなたの望むものではないと確信していますが、それは価値があると思いました。これがあなたが探しているものでない場合は、おそらくあなたは私たちに近づくか、あなたが望むものの印象を与える正規表現を見せてくれるでしょうか?

0
/(?:\d[ -]?){12,18}\d/ 

13-19桁の数字(最後の数字を除く)は、スペースまたはダッシュを付けることができます。これは非常にリベラルな正規表現ですが、実際のクレジットカードフォーマットに絞っておきたい場合があります。

1

8kのテキストをJavascriptで正規表現したいですか? Javascriptでこれを行う時間を無駄にしないでください。とにかくサーバ側の検証が必要になるので、そのまま残しておきます。

+0

8Kが上限であり、非常に届きにくいです。私は8Kに対する正規表現は、PCをそれに任意の時間の膝にもたらすとは思わないだろう。あなたはこれを確信していますか? – user53794

+0

結論はサーバー側の検証が必要であることです。クライアントにそのような操作をさせることによって、あなたは非常に*少ししか得られません。 –

関連する問題