2012-04-02 97 views
3

我正試圖篩選HTML表單在Web視圖中加載的用戶名和文本字段。以前我試過這種方法來縮小我需要的相應的文本字段,但它很乏味,並且沒有結束對變量的計算。即使我認爲我列出了很多變數,但它仍然是一個屢屢失敗的解決方案,並非所有網站的作品。使用XCode正則表達式的Javascript

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%的訪問量,但是讓我困惑的是,有時候即使這個詞恰好與我的搜索變量中的一個匹配,它也不起作用。

+0

這是非常難以閱讀。你可以只顯示Javascript並且忽略Apple的特殊對象嗎? – 2012-04-02 16:19:46

+0

是的,對此感到遺憾。 – at0m87 2012-04-02 16:28:00

回答

0

這是SPARTA!

您的RegExp與您在Looong代碼中提供的值列表不匹配。

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 2012-04-03 08:25:13

+0

在我的長代碼中,我嘗試了所有我能想到的事情,在較短的代碼中,我相信他們可以搜索較不具體的術語有點像通配符,只要找到搜索字符串中的任何字詞,它就會返回正值。我在指望regEx幫助通配符搜索,以便我可以實現更高的成功率。 – at0m87 2012-04-03 09:50:02

+0

嘗試了你的方法,並把它放到我的Xcode中,它不起作用,即使那些曾經使用我上面提到的regEx代碼的網站現在也沒有工作。 – at0m87 2012-04-03 10:00:11