【问题标题】:Regular Expression Javascript with XCode带有 XCode 的正则表达式 Javascript
【发布时间】:2012-04-02 16:12:18
【问题描述】:

我正在尝试筛选加载到 Web 视图中的 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 = '%@';}}

然后我被告知了正则表达式,但我对它不是很熟悉,我阅读了一些关于它的教程,但不是针对我的项目来尝试了解它的含义,我拼出了这段代码,这也是一个热门和错过解决方案。我什至不确定我是否做得对,但这次代码肯定很短。

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% 的点击率,但令我困惑的是,有时即使该术语与我的搜索变量之一完全匹配,它也不起作用。

【问题讨论】:

  • 这很难读。你能只显示 Javascript 而忽略 Apple 的特殊对象吗?

标签: javascript html regex xcode forms


【解决方案1】:

这是斯巴达!

您的 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:您不会将它用作一些垃圾邮件实用程序,不是吗?

【讨论】:

  • 让我试试看是否可行,不,不是垃圾邮件实用程序。这是我在 Facebook 上的申请页面:facebook.com/SignatureAccess
  • 在我的长代码中,我尝试了我能想到的一切,在较短的代码中,我相信他们可以搜索不太具体的术语,因为它们在某种程度上类似于通配符,只要找到任何搜索字符串中的术语将返回正数。我指望正则表达式来帮助进行通配符搜索,这样我就可以获得更高的成功率。
  • 尝试了你的方法,并放入我的Xcode,它不工作,即使那些曾经使用我上面做的正则表达式代码的网站,现在也不能工作。
  • 我已经错过了 if 条件的括号。
  • 啊!!我已经盯着你的代码很久了,我看不出有什么问题。哈哈!是的,以前可以正常工作的常规网站现在可以正常工作了。但是那些应该可以正常工作的网站现在还没有。从一个这样的网站的源代码(www.modelmayhem.com": "" 它有 type=text 和 name=email并且应该可以工作,但事实并非如此。你能解释一下 re.test 的语法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 2015-03-17
相关资源
最近更新 更多