2010-07-17 43 views

回答

4
/@yahoo.com\s*$/.test(mystring) 

如果字符串以@yahoo.com(加上可選的空格)結尾,則爲true。

+0

謝謝,但這是去哪裏? – AnApprentice 2010-07-17 04:15:51

0

這是怎麼回事?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
    <head> 

    <script type="text/javascript"> 

    var okd = ['yahoo.com'] // Valid domains... 

    var emailRE = /^[a-zA-Z0-9._+-][email protected]([a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})$/ 

    function ckEmail(tst) 
    { 
     var aLst = emailRE.exec(tst) 
     if (!aLst) return 'A valid e-mail address is requred'; 
     var sLst = aLst[1].toLowerCase() 
     for (var i = 0; i < okd.length; i++) { 
      if (sLst == okd[i]) { 
       return true 
      } 
     } 

     return aLst[1]; 
    } 

    var ckValid = ckEmail(prompt('Enter your email address:')) 

    if (ckValid === true) { 
     alert(ckValid) // placeholder for process validated 
    } else { 
     alert(ckValid) // placeholder for show error message 
    } 

    </script> 
    <title></title> 
    </head> 
    <body> 
    </body> 
</html> 
4

你不需要爲此使用正則表達式。

您可以使用indexOf方法查看字符串是否包含另一個字符串。

var idx = emailAddress.indexOf('@yahoo.com'); 
if (idx > -1) { 
    // true if the address contains yahoo.com 
} 

我們可以採取的slice()優勢,以實現像這樣 「結尾」:

var idx = emailAddress.lastIndexOf('@'); 
if (idx > -1 && emailAddress.slice(idx + 1) === 'yahoo.com') { 
    // true if the address ends with yahoo.com 
} 

在常綠的瀏覽器,你可以使用內置的String.prototype.endsWith()像這樣:

if (emailAddress.endsWith('@yahoo.com')) { 
    // true if the address ends with yahoo.com 
} 

瀏覽器支持請參閱MDN docs

+0

嗯。你確定這是有效的JS?這是錯誤 – AnApprentice 2010-07-17 04:15:10

+1

@nobosh這是因爲'if'後沒有語句。 styfle向您展示瞭如何測試yahoo.com是否在字符串中 - 您提供了之後發生的事情。 – JAL 2010-07-17 04:37:08

+0

你需要切片(idx + 1),切片(idx)返回@ yahoo.com – 2016-09-17 08:52:56

0
var rx = /^([\w\.]+)@([\w\.]+)$/; 
var match = rx.exec("[email protected]"); 
if(match[1] == "yahoo.com"){ 
do something 
} 

第二個捕獲組將包含該域。

+0

這是如何工作e2e? – AnApprentice 2010-07-17 04:20:24

1

要檢查特定域(yahoo.com):

/^[^@\s][email protected]$/i.test(email) 
// returns true if it matches 

要提取的域部分和稍後查看:

x = email.match(/^[^@\s][email protected]([^@\s])+$/) 
// x[0] contains the domain name 
+0

JS錯誤,它說它不是一個函數 – AnApprentice 2010-07-17 04:22:49

+0

對不起,我混淆了對'match'的調用。現在已經修復了。 – casablanca 2010-07-17 04:30:54

0
>>> String(​'[email protected]').replace​​​​​​​​(/^[^@]*@/, '') 
'yahoo.com' 
1
function emailDomainCheck(email, domain) 
{ 
    var parts = email.split('@'); 
    if (parts.length === 2) { 
     if (parts[1] === domain) { 
      return true; 
     } 
    } 
    return false; 
} 

:)

+0

這是正確的解決方案,但不是RegEx解決方案:) – MarmiK 2014-07-23 07:26:28

0

雅虎域名(不含用戶名)

@(((qc|ca)?\.yahoo\.com)|yahoo\.(com(\.(ar|au|br|co|hr|hk|my|mx|ph|sg|tw|tr|vn))?|ae|at|ch|es|fr|be|co\.(in|id|il|jp|nz|za|th|uk)|cz|dk|fi|de|gr|hu|in|ie|it|nl|no|pl|pt|ro|ru|se))