Регулярное выражение Javascript с XCode - PullRequest
3 голосов
/ 02 апреля 2012

Я пытаюсь просеять имя пользователя и текстовые поля загрузки формы HTML в веб-представлении.Ранее я пробовал этот метод, чтобы сузить соответствующие текстовые поля, которые мне нужны, но это было утомительно и нет конца вычислению переменных.хотя я и думал, что перечислил много переменных, это все еще было решением проблемы, но не все веб-сайты работают.

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 = '%@';}}

Затем мне рассказали о RegularExpression, но я с ним не очень хорошо разбиралсяи я прочитал некоторые учебники об этом, но не специально для моего проекта, чтобы попытаться понять, что это значит, и я разобрал этот код, который также является хитом.Я даже не уверен, правильно ли я это делаю, но на этот раз код определенно короткий.

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 = '%@';}}

Может кто-нибудь сказать мне, правильно ли я сделал это регулярное выражение?Я действительно понятия не имею.Некоторые сайты работают, некоторые нет.Я понимаю, что то, что я ищу, настраивается разработчиками, и у меня не будет 100% -го попадания на весь сайт, но меня озадачивает то, что иногда, даже если термин совпадает точно с одной из моих переменных поиска, он не работает.

1 Ответ

0 голосов
/ 02 апреля 2012

Это СПАРТА!

Ваш 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: Вы не собираетесь использовать это как некоторую утилиту для рассылки спама, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...