我正在尝试筛选出在 Web View 中加载的 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 = '%@';}}
有人能告诉我这个 RegularExpression 是否正确吗?我真的不知道。有些网站有效,有些无效。我知道我正在搜索的内容可由开发人员配置,我不会在所有网站上都获得 100% 的命中率,但让我感到困惑的是,有时即使该术语与我的搜索变量之一完全匹配,它也不起作用。
最佳答案
这就是斯巴达!
您的 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:您不会将其用作垃圾邮件工具,对吧?
关于javascript - 带有 XCode 的正则表达式 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979874/