Ich schreibe gerade einen Binding-Handler in Knockout, um den regulären Ausdruck zu verwenden, um die E-Mail zu validieren. Dies geschieht mit dem RFC 2822-konformen Regex.JavaScript E-Mail-Validierung mit Regex
Ich versuche RegExp zu verwenden (‚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])?
Aber da ich Apostrophe bin mit (Code-Qualität Zweck) zu Beginn es verursacht die Bindung Handler nicht die Inhalte auf Updates zu belegen .
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';
}
}
};
Jede Rückmeldung über meinen Ansatz wird geschätzt.
"_Ich verwende einfache Anführungszeichen (code quality purpose) _" Können Sie erklären, warum Sie einzelne Anführungszeichen als bessere Codequalität betrachten? – csmckelvey
Es ist in Ordnung, wenn Sie einfache Anführungszeichen verwenden, aber wenn das bedeutet, dass Sie einfache Anführungszeichen in einer Zeichenfolge flüchten müssen, verwenden Sie stattdessen doppelte Anführungszeichen für diese Zeichenfolge. Befolgen Sie nicht blind die Stilrichtlinien. Wenden Sie sie nur dort an, wo ___möglich__. – Cerbrus