Javascript 泛形式域上的正则表达式

Javascript 泛形式域上的正则表达式,javascript,regex,Javascript,Regex,我有一个表单字段,它有一个输入字段:它可以是用户名或电子邮件地址 对于用户名,任何数字和字母的组合都可以: johndoe101_username 但是,在同一个字段中的电子邮件也可以: johndoe@example.com 我很难找到一个正则表达式同时接受这两个条件。基本上,如果用户名包含“@”符号,则它必须是有效的电子邮件地址 我试着用 /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@

我有一个表单字段,它有一个输入字段:它可以是用户名或电子邮件地址

对于用户名,任何数字和字母的组合都可以:

johndoe101_username
但是,在同一个字段中的电子邮件也可以:

johndoe@example.com
我很难找到一个正则表达式同时接受这两个条件。基本上,如果用户名包含“@”符号,则它必须是有效的电子邮件地址

我试着用

/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
/([^()\[\]\\,;:\s@“]+(\.[^()\[\]\,;:\s@”]+*)(“+”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.]124;([a-zA Z-0-9]+\]$/
但这排除了只有用户名而没有电子邮件地址的人


这可能吗?我知道建议只使用两个单独的输入字段,但设计只需要一个。

您的正则表达式实际上匹配的是电子邮件,而不是用户名。您的用户名模式与
\w
相同,它接受字母、数字和

因此,如果您想要电子邮件或用户名,请使用
|
(或)操作员:

([^()\[\]\\,;:\s@“]+(\.[^()\[\]\\,;:\s@“]+)*)(“+”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.++);([a-zA 0-Z-9]{2]),[a-zA Z-Z]{2]{1,3}.[0-9]}.[1,3}.]


+
运算符代表操作系统字符数的一到无限,例如,如果您的用户名必须至少有4个字符且不超过10个字符,则可以使用
\w{4,10}

在正则表达式中添加
\w+
即可