我目前正在編寫一個綁定處理程序在挖空使用正則表達式來驗證電子郵件。這是使用符合RFC 2822的正則表達式完成的。JavaScript電子郵件驗證與正則表達式
我想使用正則表達式(「MY_REG_EXP」)
MY_REG_EXP = [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
但由於我在開始時使用單引號(代碼質量的目的),它導致了結合處理不驗證的更新內容。
ko.bindingHandlers.emailInput = {
init: function(element, valueAccessor, allBindingsAccessor, bindingContext) {
ko.bindingHandlers.textInput.init(element, valueAccessor, allBindingsAccessor, bindingContext);
},
update: function(element, valueAccessor) {
$(element).on('keydown', function (event) {
if (event.keyCode === 32) {
event.preventDefault();
}
});
var value = ko.unwrap(valueAccessor()),
regex = new RegExp('^[a-z0-9!#$%&/\'*+/=?^_`{|}~-]+(?:\/.[a-z0-9!#$%&/\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$');
if (value.trim() !== '' && !regex.test(value)) {
element.style.backgroundColor = '#EDB2B2';
} else {
element.style.backgroundColor = 'white';
}
}
};
對我的方法的任何反饋表示讚賞。
「_I使用單引號(代碼質量目的)_」你能解釋爲什麼你認爲單引號是更好的代碼質量? – csmckelvey
如果您選擇使用單引號,這很好,但如果這意味着您必須在字符串中轉義單引號,請改爲使用雙引號。不要盲目遵循風格指南。只適用於___可能_____的地方。 – Cerbrus