Regex 如何在正则表达式中编写条件表达式

Regex 如何在正则表达式中编写条件表达式,regex,Regex,我有下面一行正则表达式(javascript) 但是,我不确定如何使其包含子域(如果存在子域) 所以这个表达式应该匹配uk.yahoo.com和yahoo.com的电子邮件地址。。。如何做到这一点呢?好吧,如果你只想要子域uk.yahoo.com: /^[a-z0-9\-]+@((?:uk\)?雅虎gmail | excite)\.com$/ 添加(?:uk\)?指定一个可选的非捕获组,该组与模式“uk.”的0或1次匹配 但是,使用正则表达式验证电子邮件地址是一个非常困难的问题。是一个非常复杂的

我有下面一行正则表达式(javascript)

但是,我不确定如何使其包含子域(如果存在子域)

所以这个表达式应该匹配uk.yahoo.com和yahoo.com的电子邮件地址。。。如何做到这一点呢?

好吧,如果你只想要子域
uk.yahoo.com

/^[a-z0-9\-]+@((?:uk\)?雅虎gmail | excite)\.com$/

添加
(?:uk\)?
指定一个可选的非捕获组,该组与模式“
uk.
”的0或1次匹配


但是,使用正则表达式验证电子邮件地址是一个非常困难的问题。是一个非常复杂的标准。最好是盲目地将电子邮件发送到用户输入的任何经过最低限度验证的地址,尽早失败,并给用户一个纠正错误的机会。

当然不是那么具体,而是任何子域。uk只是一个例子——这只是对jQuery进行一些CSS更改。我也有服务器端验证。您可以将
uk\.
更改为
\S+\.
,然后。这将捕获1个或多个非空白字符,后跟
\。
。像这样吗<代码>/^[a-z0-9.\-]+@((?:\S+\)?yahoo | gmail | excite)\.com$/-那个对我没用。我正在使用regexpal.com进行测试,请尝试以下内容:
/^[a-z0-9\-]+@((?:\S+\)?(?:yahoo | gmail | excite))\.com$/
。这可能会更有效,但在紧要关头它会起作用。很抱歉打扰你,但那一个也不起作用。我正在使用regexpal.com进行测试。
/^[a-z0-9_.\-]+@(yahoo|gmail|excite})\.com$/