aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/str.rs
diff options
context:
space:
mode:
authorteapotd <teapot404@gmail.com>2020-04-01 11:08:02 +0200
committerteapotd <teapot404@gmail.com>2020-04-02 10:16:46 +0200
commit779552ee7ddbbde1055c7202e16b9a13c3961988 (patch)
treef3dac563783cfeaa5ca69851c426d7e7b4dff9c3 /components/script/dom/bindings/str.rs
parente47e884cc738a5cb472416a4fbdd9d2a32a2385c (diff)
downloadservo-779552ee7ddbbde1055c7202e16b9a13c3961988.tar.gz
servo-779552ee7ddbbde1055c7202e16b9a13c3961988.zip
Form constraints validation
Diffstat (limited to 'components/script/dom/bindings/str.rs')
-rw-r--r--components/script/dom/bindings/str.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index 986554206b6..0905c157143 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -519,6 +519,28 @@ impl DOMString {
// Step 7, 8, 9
Ok((date_tuple, time_tuple))
}
+
+ /// https://html.spec.whatwg.org/multipage/#valid-e-mail-address
+ pub fn is_valid_email_address_string(&self) -> bool {
+ lazy_static! {
+ static ref RE: Regex = Regex::new(concat!(
+ r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?",
+ r"(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
+ ))
+ .unwrap();
+ }
+ RE.is_match(&self.0)
+ }
+
+ /// https://html.spec.whatwg.org/multipage/#valid-simple-colour
+ pub fn is_valid_simple_color_string(&self) -> bool {
+ let mut chars = self.0.chars();
+ if self.0.len() == 7 && chars.next() == Some('#') {
+ chars.all(|c| c.is_digit(16))
+ } else {
+ false
+ }
+ }
}
impl Borrow<str> for DOMString {