1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import java.util.Map;
18 import java.util.regex.Pattern;
19
20 import org.apache.commons.lang3.StringUtils;
21 import org.htmlunit.SgmlPage;
22
23
24
25
26
27
28
29
30
31
32 public class HtmlEmailInput extends HtmlSelectableTextInput implements LabelableElement {
33
34
35 private static final Pattern DEFAULT_PATTERN =
36 Pattern.compile("^[a-zA-Z\\d.!#$%&'*+/=?^_`{|\\}~-]+@[a-zA-Z\\d](?:[a-zA-Z\\d-]{0,61}[a-zA-Z\\d])?"
37 + "(?:\\.[a-zA-Z\\d](?:[a-zA-Z\\d-]{0,61}[a-zA-Z\\d])?)*$");
38
39
40
41
42
43
44
45
46 HtmlEmailInput(final String qualifiedName, final SgmlPage page,
47 final Map<String, DomAttr> attributes) {
48 super(qualifiedName, page, attributes);
49 }
50
51
52
53
54 @Override
55 public void setDefaultChecked(final boolean defaultChecked) {
56
57 }
58
59
60
61
62 @Override
63 public String getValue() {
64 final String raw = getRawValue();
65 if (StringUtils.isBlank(raw)) {
66 return "";
67 }
68 return raw.trim();
69 }
70
71 @Override
72 public boolean isValid() {
73 final boolean isValid = super.isValid();
74 if (!isValid) {
75 return false;
76 }
77
78 final String val = getValue();
79 if (StringUtils.isNotBlank(val)) {
80 return DEFAULT_PATTERN.matcher(val).matches();
81 }
82 return true;
83 }
84
85
86
87
88 @Override
89 protected boolean isPatternSupported() {
90 return true;
91 }
92
93
94
95
96 @Override
97 protected boolean isBlankPatternValidated() {
98 return false;
99 }
100
101
102
103
104 @Override
105 protected boolean isMinMaxLengthSupported() {
106 return true;
107 }
108 }