Skip to content

Commit 29d84e4

Browse files
Potential fix for code scanning alert no. 781: Inefficient regular expression (#61)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 26456d7 commit 29d84e4

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

assets/js/lib/jquery/plugins/validate/additional-methods.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,25 @@ jQuery.validator.addMethod("strippedminlength", function(value, element, param)
179179

180180
// same as email, but TLD is optional
181181
jQuery.validator.addMethod("email2", function(value, element, param) {
182-
return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z\d\-_~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z\d\-_~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
182+
if (this.optional(element)) {
183+
return true;
184+
}
185+
186+
if (typeof value !== "string") {
187+
return false;
188+
}
189+
190+
var input = document.createElement("input");
191+
input.type = "email";
192+
input.value = value;
193+
194+
// Standard email validation (browser implementation).
195+
if (typeof input.checkValidity === "function" && input.checkValidity()) {
196+
return true;
197+
}
198+
199+
// Allow optional TLD: accept local@domain where domain has no spaces/@ and does not end with dot.
200+
return /^[^\s@]+@[^\s@.][^\s@]*[^.\s@]$/.test(value);
183201
}, jQuery.validator.messages.email);
184202

185203
// same as url, but TLD is optional

0 commit comments

Comments
 (0)