2011-07-28 26 views
0

我的名字(FNAME + L-NAME)和電子郵件,我有自己的正則表達式,但他們沒有驗證這有什麼問題的正則表達式

var fnlnregex = /^[\w\/\s\.-]+$/; //first name + last name 
var usremailregex = /^[@.\w]+$/; 

if(!usremailregex.test($("#Eml").val())){ 
     flag = false; 
     $("#Eml").attr('class','red'); 
    }else{ 
     $("#Eml").attr('class',''); 
    } 

但它不驗證它正在採取以下電子郵件字段數據是正確的 //如果我在電子郵件領域中,不採取爲錯

fnlnregex只輸入「ABC」 - 這不應該允許數字,但我同樣如果名稱的正則表達式被允許。我如何更正 兩個

回答

1

/^[@.\w]+$/手段:

start of string - one or more of a combination of @, any character or word boundary - end of string

我必須說,這是非常無用。 .表示已包含@\w的任何字符。

至於爲什麼abc匹配 - 呃,它匹配beginning - any character - end

你要找的是什麼線沿線的東西:

/^[a-z0-9][email protected][a-z0-9]+\.[a-z]+$/i

翻譯爲:

beginning - one or more letters or digits - a @ - one or more letters or digits - a . - one or more letters - end

i表示它不區分大小寫。

1

您的usremailreg永遠不會驗證電子郵件。它接受至少有一個字符爲.@a-z0-9A-Z的任何內容。所以@@@@@@@@@是完全有效的。

試試這一個上規模,以驗證兼容RFC 822,地址:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 
0

usremailregex:如果字符串只包含「@」,或字的字符,允許它「」。這對於abc是有效的。

+0

看起來像馬克B給出了更完整的答案。 – Johan

0

在第一個正則表達式中,您使用\ w速記,它匹配任何單詞字符,包括數字;你可以嘗試:

/^[A-Za-z\/\s\.-]+$/ 

如果你只是想要字母字符。

相關問題