2015-07-19 107 views
1

我在我的服務器上這樣做了,它似乎只檢查條目的第一個字符。 然後,我試圖把它放在jsFiddle的例子和測試它,但我不知道如何讓jsFiddle工作,因爲那裏似乎沒有任何反應。 https://jsfiddle.net/bw906rLt/我打破了jQuery正則表達式?

我已經嘗試了許多例子在香港專業教育學院發現的計算器,但每次它只是測試的第一個字母

<input id="email" onKeyUp="testEmail(this);"> 
<span id="a">answer</span> 

function testEmail(el) { 
    var em = $(el).val(); 
    if (validate(em)) { 
     $("#a").html("valid"); 
    } else { 
     $("#a").html("invalid"); 
    } 
} 

function validate(em) { 
    var regex = /^([[email protected]])/; 
    return regex.test(em); 
} 

這是我做的一個簡單的例子,但它不工作。 我的服務器上回應有效期爲「A」,無效的「(」尚未生效的「一(」。

我已經閱讀正則表達式的幾件事情,但我在想念這裏somwhere

完全擋板我

+0

'up'沒有在https://jsfiddle.net/bw906rLt/定義? – guest271314

+1

就像一個邪惡的提醒http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/ –

回答

1

重複的字符類的一個或多個次,然後添加一行錨結束。

var regex = /^[[email protected]]+$/; 

var regex = /^[\[email protected]]+$/; 

在我的服務器上,它對'a'有效,對'('無效但對'a(')有效。爲什麼?

^([[email protected]])正則表達式在開始時匹配一個字符,它必須是a-z或A-Z或0-9或_或@。所以a得到匹配,(不會得到匹配,因爲(不存在於char類中。以上正則表達式匹配a(,因爲char類中的a-z與起始a匹配,所以它返回true。

+1

看到你第一個評論和改變它,它的工作,謝謝你,並會打勾,然後看到你的解釋,再次感謝你 – nathan

1

出現onKeyUp處理器在

onKeyUp="up(this);

設置爲up雖然up不會出現定義?

嘗試內testEmailhtml設定事件處理程序el.keyup(),主叫testEmail作爲處理程序.keyup()eventel,其中eventkeyup事件,event.targetinput元件

HTML

<input id="email"> <span id="a">answer</span> 

js

$(function() { 

function testEmail(event) { 
    var em = $(event.target).val(); 
    if (validate(em)) { 
     $("#a").html("valid"); 
    } else { 
     $("#a").html("invalid"); 
    }  
} 

function validate(em) { 
    var regex = /^([[email protected]])/; 
    return regex.test(em); 
} 

$("#email").keyup(testEmail); 

}); 

的jsfiddle https://jsfiddle.net/bw906rLt/2/

0

感謝您的幫助,取得了一個簡單的功能再次得到了什麼我現在想的,謝謝。

<input onKeyUp="testEmailChars"><span id="a"></span> 

function testEmailChars(el){ 
    var email = $(el).val(); 
    if (/^[[email protected]]+$/.test(email)==true){ 
     $("#a").html("valid"); 
    } else { 
     $("#a").html("not valid"); 
    } 
}