0

JavaScript フォーム検証ルーチンを使用して、さまざまな入力テキスト フィールドをスキャンして、埋め込まれた電話番号と電子メール アドレスを探す必要があります。これは、投稿は無料ですが、バイヤーとの「接続には料金が発生する」クラシファイド システム用です。そのため、ユーザー (広告を投稿する人) が単に自分の電話を埋め込んだり、またはその両方を行う機能を (可能な限り) 防止することを目的としています。連絡先情報を電子メールで送信して、システムをバイパスします。

私はしばらくの間グーグルで検索してきましたが、正規表現は私の得意分野ではないため、役立つコードのスニペットを見つけるのに少し苦労しています。私がやりたいのは、テキスト フィールドの合格/不合格を取得することだけです (メールや電話番号が埋め込まれていないように見える場合は合格、含まれている場合は失敗します)。

誰かがこれに適したJavaScriptソリューションをすでに持っていますか?

4

5 に答える 5

2

これを試して:

var text = textArea.value;
if (text.search(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/))
 ...;//Contains email
if (text.search(/^[+]?(?!0{5})(\d{5})(?!-?0{4})(-?\d{4})?$/))
 ...;//Contains phone
于 2009-09-07T13:37:26.363 に答える
1

入力してくれてありがとう。これが私が最終的に得たバージョンです。他の人の助けになることを願っています。注: このサイトのフィルターを通過するように、この投稿の実際の「悪い」言葉を削除しました。「badword1」、「badword2」などを実際の「悪い」単語 (nukular、calender、ekcetera など) に置き換えることができます。

function isAllowed(varField) {

      var msg = '';
      var pass = true;

      var regex0=/\b(@|www|WWW|http|hotmail|gmail|badword1|badword2|badword3)\b/i;
      if (regex0.test(varField))
         {
         msg += "Text appears to have disallowed words (e.g. profanity, email, web address, @ symbol, etc.)\n";
         pass = false;
         }

      var regex1=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
      if (regex1.test(varField))
        {
        msg += "Text appears to have email address in it (not allowed\n";
        pass = false;
        }


      var regex2=/\b\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}\b/i;
      if (regex2.test(varField))
        {
        msg += "Text appears to have a phone number in it (not allowed)\n";
        pass = false;
        }

      if (msg!='')
        {
        alert(msg);
        }
     return pass;

}
于 2009-09-08T00:00:25.950 に答える
0

これにより、メールアドレスが検索されます:\ b [A-Z0-9 ._%+-] + @ [A-Z0-9.-]+。[AZ]{2,4}\ b

これで電話番号が見つかります:\ b(()?\ d {2,3}(?(1)))(?:-?\ d {3}-?\ d {4} | \ d {11} )\ b

于 2009-09-07T13:35:51.373 に答える
0

あなたはいくつかを得ることができますが、ほとんどを得るとは期待していません(特に人々が要件を知っているか、フォームに記入する機会が複数ある場合)。

人々はすでに「hotmaildotcomのmyaddresses」のようなことをすることによって電子メールアドレスのボット検出を回避するのが本当に得意であり、これには何百万ものバリエーションがあります。また、電話番号は地域によって異なります。

于 2009-09-07T13:38:47.220 に答える
0

使用しているサーバー側のテクノロジについては言及していませんが、この種の処理をサーバー上で行う方が望ましい場合があります。オブジェクト指向のサーバー サイド フレームワークの柔軟性とパワーは、ほとんどの場合 JavaScript の柔軟性とパワーに勝るからです。このケースも例外ではなく、JavaScript 正規表現のサポートにはいくつかの重要な機能が欠けているようです。

サーバー側とクライアント側のどちらを選択するかに関係なく、 Espressoなどのツールを使用すると、RegEx コードの記述が大幅に簡素化されることがわかりました。Mac で実行している場合は、Reggyを検討してください。これらのツールには、通常、最小限の変更で機能するさまざまな一般的なクエリ (電話番号、電子メールなど) 用の「ストック」正規表現がいくつか付属しています。

于 2009-09-07T13:48:40.530 に答える