我正在使用位于此处的 javascript 正则表达式编辑器: Scriptular,它按预期工作,所以我认为我的 RegEx 很好,但我刚刚开始使用 RegEx 工作和学习,所以我可能会继续使用 JS 实现 RegEx。
计划: 用户填写表格,然后评估输入的值以确定它是电子邮件地址还是 UID(用户 ID)。如果是电子邮件,只要它通过相当简单的 RegEx,我们就接受它。如果它没有通过,那么我们评估表单字段以查看它是否是 UID 的有效格式(我们稍后会对此进行更多检查),如果两者都失败,我们会向用户发送警报,说明该值输入的不被接受为有效的电子邮件或 UID。这是目标。它仅供内部使用,因此不会尝试对它进行所有可能的电子邮件测试,至于 UID,下面的 RegEx 迄今为止一直在为我们工作。
1 代表当我输入 john.doe@gmail.com
2 代表当我输入 ab1234
for (var i=0,max=tagArray.length;i<max;i++) {
var n = tagArray[i];
var uid_regex = /^[a-z]{2}\d{3}[a-z0-9]{1}$/i;
var email_regex = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
var email_eval = n.match(email_regex);
var uid = n.match(uid_regex);
console.log(n + ' evaluates to (email/uid): ' + email_eval + ' and ' + uid);
//1 log shows when john.doe@gmail.com is entered: john.doe@gmail.com evaluates to (email/uid): john.doe@gmail.com and null
//2 log shows when ab1234 is entered: ab1234 evaluates to (email/uid): null and ab1234
if ((uid = null) && ( email_eval != null)){
// $("##scheduleDist").tagit("createTag", n);
console.log('The value entered is an email address: ' + email_eval);
}
else if ((uid != null) && ( email_eval = null)){
console.log('The value entered is a UID: ' + n);
}
else {
console.log( n + ' is not a valid entry. Email Validation: ' + email_eval + ' UID Validation: ' + uid );
//1 log shows: john.doe@gmail.com is not a valid entry. Email Validation: john.doe@gmail.com UID Validation: null
//2 log shows: ab1234 is not a valid entry. Email Validation: null UID Validation: null
return false;
}
注意: 在尝试将其格式化为 SO 时,我希望没有弄乱脚本。在 FF 或 IE 或 Chrome 中没有显示 JS 错误,所以如果她有语法错误,那是因为我的格式。
冒着使人们的答案产生偏见的风险,我确实相信我的问题在第 10 行和/或第 14 行(if 和 else if 条件行)。
如果我没有说清楚,请告诉我。
TIA,汤姆