現在、電子メールの検証に正規表現を使用するためにknockoutにバインディングハンドラを作成しています。これは、RFC 2822に準拠した正規表現を使用して行われます。私は正規表現(「MY_REG_EXP」)JavaScript Email Validation with Regex
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';
}
}
};
私のアプローチに関するフィードバックは高く評価されます。
"シングルクォートを使用しています(コード品質目的)_"シングルクォートがより良いコード品質であると考える理由を説明できますか? – csmckelvey
一重引用符を使用することを選択した場合は問題ありませんが、文字列内で一重引用符をエスケープする必要がある場合は、その文字列に二重引用符を使用してください。盲目的にスタイルのガイドラインに従わないでください。 ___possible___のどこにのみ適用してください。 – Cerbrus