2012-04-02 13 views
3

私は、HTML形式のユーザー名とテキストフィールドをWebビューで読み込む際にふるい分けています。以前はこのメソッドを試して、必要なテキストフィールドを絞り込んだが、面倒だったし、変数の計算が終わっていない。私は多くの変数を列挙したと思っていたにもかかわらず、それはまだヒットであり、解決策を見逃していました。正規表現Javascript with XCode

var inputFields = document.querySelectorAll("input[type='text']"); 
for (var i = inputFields.length >>> 0; i--;) { 
     if ((inputFields[i].getAttribute('name') == 'email') 
     || (inputFields[i].getAttribute('name') == 'Email') 
     || (inputFields[i].getAttribute('name') == 'e-mail') 
     || (inputFields[i].getAttribute('name') == 'E-mail') 
     || (inputFields[i].getAttribute('name') == 'emailerr') 
     || (inputFields[i].getAttribute('name') == 'UID') 
     || (inputFields[i].getAttribute('name') == 'uid') 
     || (inputFields[i].getAttribute('name') == 'username') 
     || (inputFields[i].getAttribute('name') == 'Username') 
     || (inputFields[i].getAttribute('name') == 'userName') 
     || (inputFields[i].getAttribute('name') == 'user_name') 
     || (inputFields[i].getAttribute('name') == 'User_Name') 
     || (inputFields[i].getAttribute('name') == 'User_name') 
     || (inputFields[i].getAttribute('name') == 'userid') 
     || (inputFields[i].getAttribute('name') == 'userID') 
     || (inputFields[i].getAttribute('name') == 'UserID') 
     || (inputFields[i].getAttribute('name') == 'Userid') 
     || (inputFields[i].getAttribute('name') == 'ID') 
     || (inputFields[i].getAttribute('name') == 'id') 
     || (inputFields[i].getAttribute('name') == 'j_username') 
     || (inputFields[i].getAttribute('name') == 'session_key') 
     || (inputFields[i].getAttribute('name') == 'login_password')) { 
          inputFields[i].value = '%@';}} 

その後、私は正規表現について言われたが、私はそれに非常に精通しなかったし、私はそれについていくつかのチュートリアルを読んではなく、試してみて、それが何を意味するのか取得する私のプロジェクトに固有の、私はある、このコードをつなぎヒットとミスの解決策もあります。私はそれを正しくやっているのかどうかはわかりませんが、コードは確かに今回は間違いです。

var inputFields = document.querySelectorAll("input[type='text']"); 
for (var i = inputFields.length >>> 0; i--;) { 
    regStr = /(mail|user|iden|name|id|key|login|username|email)/i; 
    searchName = inputFields[i].getAttribute('name').search(regStr); 
    searchId = inputFields[i].getAttribute('id').search(regStr); 
    if (!(searchName == -1) || !(searchId == -1)){ 
      inputFields[i].value = '%@';}} 

このRegularExpressionを正しく実行したことを誰かが教えてもらえますか?私は本当に分かりません。一部のサイトは動作しますが、一部は動作しません。私は何を探しているのかは開発者が設定でき、すべてのサイトで100%ヒットしないことを理解していますが、私の検索変数の1つに厳密に一致しているにもかかわらず、

+0

これは読みにくいです。 Javascriptを表示してAppleの特別なオブジェクトを除外できますか? –

+0

さようなら、申し訳ありません。 – at0m87

答えて

0

これはSPARTAです!

あなたの正規表現で指定した値のリストとRegExpが一致しませんでした。

var opts = "email,e-mail,emailerr,uid,username,userid,id,j_username," + 
    "session_key,login_password,live,liveid,live_id,live_email"; 
var re = new RegExp(opts.replace(/,/g, "|"), "i"); 
if (re.test(inputFields[i].getAttribute('name'))) { 
    inputFields[i].value = '%@'; 
} 

PS:あなたはスパム用ユーティリティとして使用するつもりはありませんか?

+0

これがうまくいくかどうか試してみましょう。スパム対策ユーティリティではありません。ここに私のアプリケーションページはFacebook上にあります:https://www.facebook.com/SignatureAccess – at0m87

+0

私の長いコード私は考えることができるすべてのものを試していました。短いコードでは、何とかワイルドカードに似ていて、検索文字列中の用語のどれかが正の値を返す限り、ワイルドカードを検索してより高い成功率を達成できるよう、regExを参考にしていました。 – at0m87

+0

あなたのメソッドを試して、私のXcodeに入れて、それは動作しません、私のregExコードで動作していたそれらのサイトでも、私は今動作しませんでした。 – at0m87