我的自定义 Regex 电子邮件验证器未按预期工作
My custom Regex email validator is not working as intended
我正在尝试创建自定义正则表达式来验证遵循以下规则的电子邮件:
- 电子邮件应以字母 (a-z) 开头,不应以特殊字符或数值开头
- 首字母后可包含数字(0-9)、字母(a-z)、下划线(_)和点(.)
- 里面应该只有一个@符号
- 在@符号后,只允许包含字母和点(除点(.)外不能再有特殊字符或数字)
- 电子邮件不应以点 (.) 结尾,而应以字母结尾
- 它不应该有任何空格
我有两个数组:trueEmails
包含有效电子邮件,notEmails
包含无效电子邮件。
我创建了以下正则表达式:
const email = /^[a-zA-Z]+(\d|.|\w)*@[a-zA-Z]+.[a-zA-Z]+.*[a-zA-Z]+$/;
我的正则表达式不适用于第 1 条规则。 2、3、4 和 6。这是我的代码。
const notEmails = [
// rule 1
'_test@email.com',
'#test@email.com',
'1test@email.com',
// rule 2
'test&131@yahoo.com',
// rule 3
'test@gmail@yahoo.com',
// rule 4
'test@yahoo23.com',
// rule 5
'test@yahdsd.com.',
// rule 6
'white space@gmail.com'
]
const trueEmails = [
// rule 1
'test@email.com',
// rule 2
'test2email@yahoo.com',
'test_email@yahoo.com',
'test.123_.emai.l@yahoo.com',
// rule 3
'test@gmail.com',
// rule 4
'testsample@yahoo.co.in',
// rule 5
'testdample232@gmail.com',
// rule 6
'no_white_space@gmail.com'
]
const email = /^[a-zA-Z]+(\d|.|\w)*@[a-zA-Z]+.[a-zA-Z]+.*[a-zA-Z]+$/;
console.log("NotEmails, should return false")
console.log(notEmails.map((each) => each + ' => ' + email.test(each)));
console.log("trueEmails, should return true")
console.log(trueEmails.map((each) => each + ' => ' + email.test(each)));
提前致谢。
我已经更新了正则表达式以供您使用。它不是万无一失的,但适用于您设置的限制。
const notEmails = [
// rule 1
'_test@email.com',
'#test@email.com',
'1test@email.com',
// rule 2
'test&131@yahoo.com',
// rule 3
'test@gmail@yahoo.com',
// rule 4
'test@yahoo23.com',
// rule 5
'test@yahdsd.com.',
// rule 6
'white space@gmail.com'
]
const trueEmails = [
// rule 1
'test@email.com',
// rule 2
'test2email@yahoo.com',
'test_email@yahoo.com',
'test.123_.emai.l@yahoo.com',
// rule 3
'test@gmail.com',
// rule 4
'testsample@yahoo.co.in',
// rule 5
'testdample232@gmail.com',
// rule 6
'no_white_space@gmail.com'
]
const email = /^[a-zA-Z]+[a-zA-Z0-9_.]+@[a-zA-Z.]+[a-zA-Z]$/;
console.log("NotEmails, should return false")
console.log(notEmails.map((each) => each + ' => ' + email.test(each)));
console.log("trueEmails, should return true")
console.log(trueEmails.map((each) => each + ' => ' + email.test(each)));
描述
正则表达式:/^[a-zA-Z]+[a-zA-Z0-9_.]+@[a-zA-Z.]+[a-zA-Z]$/
^
行首
[a-zA-Z]
来自 a-z 的任意字符
+
一次或多次
[a-zA-Z0-9_.]
来自 a-z 的任何字符,以及数字、下划线和句点。
+
一次或多次
@
匹配文字 @ 符号
[a-zA-Z.]+
来自 a-z 和句点 的任意字符
+
一次或多次
- [a-zA-Z]` a-z
中的任何字符
$
行尾
我正在尝试创建自定义正则表达式来验证遵循以下规则的电子邮件:
- 电子邮件应以字母 (a-z) 开头,不应以特殊字符或数值开头
- 首字母后可包含数字(0-9)、字母(a-z)、下划线(_)和点(.)
- 里面应该只有一个@符号
- 在@符号后,只允许包含字母和点(除点(.)外不能再有特殊字符或数字)
- 电子邮件不应以点 (.) 结尾,而应以字母结尾
- 它不应该有任何空格
我有两个数组:trueEmails
包含有效电子邮件,notEmails
包含无效电子邮件。
我创建了以下正则表达式:
const email = /^[a-zA-Z]+(\d|.|\w)*@[a-zA-Z]+.[a-zA-Z]+.*[a-zA-Z]+$/;
我的正则表达式不适用于第 1 条规则。 2、3、4 和 6。这是我的代码。
const notEmails = [
// rule 1
'_test@email.com',
'#test@email.com',
'1test@email.com',
// rule 2
'test&131@yahoo.com',
// rule 3
'test@gmail@yahoo.com',
// rule 4
'test@yahoo23.com',
// rule 5
'test@yahdsd.com.',
// rule 6
'white space@gmail.com'
]
const trueEmails = [
// rule 1
'test@email.com',
// rule 2
'test2email@yahoo.com',
'test_email@yahoo.com',
'test.123_.emai.l@yahoo.com',
// rule 3
'test@gmail.com',
// rule 4
'testsample@yahoo.co.in',
// rule 5
'testdample232@gmail.com',
// rule 6
'no_white_space@gmail.com'
]
const email = /^[a-zA-Z]+(\d|.|\w)*@[a-zA-Z]+.[a-zA-Z]+.*[a-zA-Z]+$/;
console.log("NotEmails, should return false")
console.log(notEmails.map((each) => each + ' => ' + email.test(each)));
console.log("trueEmails, should return true")
console.log(trueEmails.map((each) => each + ' => ' + email.test(each)));
提前致谢。
我已经更新了正则表达式以供您使用。它不是万无一失的,但适用于您设置的限制。
const notEmails = [
// rule 1
'_test@email.com',
'#test@email.com',
'1test@email.com',
// rule 2
'test&131@yahoo.com',
// rule 3
'test@gmail@yahoo.com',
// rule 4
'test@yahoo23.com',
// rule 5
'test@yahdsd.com.',
// rule 6
'white space@gmail.com'
]
const trueEmails = [
// rule 1
'test@email.com',
// rule 2
'test2email@yahoo.com',
'test_email@yahoo.com',
'test.123_.emai.l@yahoo.com',
// rule 3
'test@gmail.com',
// rule 4
'testsample@yahoo.co.in',
// rule 5
'testdample232@gmail.com',
// rule 6
'no_white_space@gmail.com'
]
const email = /^[a-zA-Z]+[a-zA-Z0-9_.]+@[a-zA-Z.]+[a-zA-Z]$/;
console.log("NotEmails, should return false")
console.log(notEmails.map((each) => each + ' => ' + email.test(each)));
console.log("trueEmails, should return true")
console.log(trueEmails.map((each) => each + ' => ' + email.test(each)));
描述
正则表达式:/^[a-zA-Z]+[a-zA-Z0-9_.]+@[a-zA-Z.]+[a-zA-Z]$/
^
行首[a-zA-Z]
来自 a-z 的任意字符
+
一次或多次[a-zA-Z0-9_.]
来自 a-z 的任何字符,以及数字、下划线和句点。+
一次或多次@
匹配文字 @ 符号[a-zA-Z.]+
来自 a-z 和句点 的任意字符
+
一次或多次- [a-zA-Z]` a-z 中的任何字符
$
行尾