2015-05-21 37 views
-3

條件讓我有這樣串給我發電子郵件在[email protected]如果-elseif的,否則在正則表達式

我想驗證(使用正則表達式)字符串像

  1. 字符串包含電子郵件網址然後字符串必須包含domain.com
  2. 字符串包含呼叫然後字符串必須包含10位數字

一些驗證字符串

  1. 發電子郵件給我[email protected]
  2. 給我打電話9874456734
  3. 我很好

一些無效的字符串

  1. 在給我發電子郵件[email protected]​​ackoverflow.com

直到現在我試圖

腳本

var str = 'email me at [email protected]'; 
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; 
} 

它工作正常,但我想這樣做一個單一的正則表達式表達。

+4

ok。你的代碼在哪裏? – WhiteLine

+0

我們可以使用一些代碼。你有什麼嘗試?或者你只是要求我們爲你做? – Thalsan

+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 [email protected]'; 
 
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 [email protected]\ncall me at 9874456734\nI am fine\n\nemail me at [email protected]'; 
 
var m; 
 
    
 
while ((m = re.exec(str)) !== null) { 
 
    document.getElementById("res").innerHTML += m[0] + "<br/>"; 
 
}
<div id="res"/>

+0

您可能還會在'domain \ .com'周圍添加'\ b',以確保我們不會匹配'ddomain.comand'。 –

+0

有幫助嗎,還是需要更多幫助?請解釋一下 –

+0

。 –

相關問題