在Regex的If-ElseIf-Else条件

时间:2015-05-21 11:48:33

标签: javascript regex

让我有一个字符串,如给我发送电子邮件至info@domain.com

我想验证字符串(使用Regex),如

  1. 字符串包含电子邮件网址,则字符串必须包含 domain.com
  2. 字符串包含调用,然后字符串必须包含 10位数字
  3. 一些验证字符串

    1. 发送电子邮件至info@domain.com
    2. 致电9874456734
    3. 我很好
    4. 一些无效的字符串

      1. 发送电子邮件至info@st​​ackoverflow.com
      2. 直到现在我正在尝试

        脚本

        var str = 'email me at info@domain.com';
        var matchEmailUrl = str.match(/email|url/);
        var matchCall = str.match(/call/)
        var validation = !matchEmailUrl && !matchCall;    
        
        if(!validation){
           if(matchEmailUrl)
              validation = str.match(/domain\.com/)  != null;
           else if(matchCall)
           validation = str.match(/\d{10}/)  != null;
        }
        

        它工作正常,但我想做一个正则表达式。

1 个答案:

答案 0 :(得分:1)

您可以使用单个正则表达式验证字符串:

var re = /.*?\b(?:email|url)\b.*?domain\.com|\bcall\b.*?\d{10}|^(?:(?!\b(?:email|url)\b).)+$/i;

使用它像:

var re = /.*?\b(?:email|url)\b.*?domain\.com|\bcall\b.*?\d{10}|^(?:(?!\b(?:email|url)\b).)+$/i; 
var str = 'email me at info@domain.com';
if (re.test(str))
  alert(true);

以下是此正则表达式匹配的示例:

var re = /.*?\b(?:email|url)\b.*?domain\.com|\bcall\b.*?\d{10}|^(?:(?!\b(?:email|url)\b).)+$/igm; 
var str = '\nemail me at info@domain.com\ncall me at 9874456734\nI am fine\n\nemail me at info@stackoverflow.com';
var m;
 
while ((m = re.exec(str)) !== null) {
    document.getElementById("res").innerHTML += m[0] + "<br/>";
}
<div id="res"/>