我有以下用于电子邮件验证的正则表达式
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/;
此解决方案或类似解决方案的唯一问题是123@domain.com传递此正则表达式。
我不希望任何电子邮件都以数字开头。
^[a-zA-Z0-9.!#$%&'+/=?^_`{|}~-]+@
这是正则表达式的一部分,它将所有内容都匹配到@
分隔符。CCD_ 2。匹配任何数字。因此,在此之前创建一个与0-9不匹配的新短语。然后将量词(当前为+
,至少为1(更改为*
(0或更多(,这样只有一个字符的电子邮件就可以工作(当然,只要它不是数字(。
^[a-zA-Z.!#$%&'+/=?^_`{|}~-][a-zA-Z0-9.!#$%&'+/=?^_`{|}~-]*@
请参阅https://regex101.com/r/qjdZ0A/1作为交互式示例。
在电子邮件的表达式前面加上一个否定的展望。。。
^(?![0-9])+[a-zA-Z0-9.!#$%&'+=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)$
_________
只有当第一个字符不是0-9
时,这才匹配电子邮件
reg07就是您所需要的。
代码包括构建的过程
const stringToTest = "zaz234@microshit.kazo"
// Ideal
const regex = new RegExp('(^[^@.]+)@([^@.]+).{1}(w{1,6}$)');
const reg = /(^(.+?))@(.+?).(w{1,6})/;
const reg00 = /(^(.+)@)/;
const reg01 = /(^[^@]+)@/;
const reg02 = /(^[^@]+)@([^@]+)/;
const reg03 = /(^[^@]+)@([^@]+).{1}/;
const reg04 = /(^[^@]+)@([^@]+).{1}(w+)/;
const reg05 = /(^[^@]+)@([^@]+).{1}(w{2,4})/;
const reg06 = /(^[^@]+)@([^@]+).{1}(w{1,6}$)/;
const reg07 = /(^[^@.]+)@([^@.]+).{1}(w{1,6}$)/;
console.log(`We are testing this RexEx:n${reg07}nnTo see if matches this string:n${stringToTest}nnResults:`)
const booleanReg = reg07.test(stringToTest)
const arrayReg = reg07.exec(stringToTest)
console.log(`1.Simeple Match:n${booleanReg}n2.Array Match:n${arrayReg}`)
const emailInfo = {
emailUserName: arrayReg[1],
emailProvider: arrayReg[2],
emailExtention: arrayReg[3]
}
console.log(`nnemail objet build:nn`, emailInfo)