1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
4 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
5 <script src="../../fast/js/resources/js-test-pre.js"></script>
8 <p id="description"></p>
9 <div id="console"></div>
11 <input id="simple" pattern="[0-9][A-Z]{3}" value="0AAA"
12 /><input id="no-pattern-and-no-value"
13 /><input id="ip-address" type="text" pattern="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" value="127.0.0.1"
14 /><input id="email-address" type="text" pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" value="someone@somewhere.com"
15 /><input id="wrong-email-address" type="text" pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" value="Wrong!"
16 /><input id="match-1" type="text" pattern="\b(word1|word2|word3)(?:\W+\w+){1,6}?\W+(word1|word2|word3)\b" value="word1 near word2"
17 /><input id="match-2" type="text" pattern=".{5,}" value="12345"
18 /><input id="match-3" type="text" pattern=".{5,}" value="*(@$!"
19 /><input id="match-4" type="text" pattern=".{5,}" value="*(@^$!"
20 /><input id="match-5" type="text" pattern="0|1|2|3|4|5|6|7|8|" value="3"
21 /><input id="match-6" type="text" pattern="^(foo).*" value="foo"
22 /><input id="match-7" type="text" pattern="^(foo).*" value="fooo"
23 /><input id="match-8" type="text" pattern="\w" value="f"
24 /><input id="match-9" type="text" pattern="\." value="."
25 /><input id="match-10" type="text" pattern="\)\(" value=")("
26 /><input id="match-11" type="text" pattern="ab" value="ab"
27 /><input id="match-12" type="text" pattern="^ab" value="ab"
28 /><input id="match-13" type="text" pattern="^\(" value="("
29 /><input id="match-14" type="text" pattern="...\)\(..." value="aaa)(bbb"
30 /><input id="match-15" type="text" pattern="^" value=""
31 /><input id="match-16" type="text" pattern="$" value=""
32 /><input id="match-17" type="text" pattern="foobar" value="" />
33 <input id="match-18" type="text" pattern="[0-9]|10|11|12" value="10" />
34 <input id="match-19" type="text" pattern="10|11|12|[0-9]" value="12" />
35 <input id="match-20" type="text" pattern="f(o|e)\1" value="foo" />
36 <input id="empty-pattern-match" type="text" pattern="" value="" />
37 <input id="wrong-gray-or-grey" type="text" pattern="gr[ae]y" value="Wrong!"
38 /><input id="gray" type="text" pattern="gr[ae]y" value="gray"
39 /><input id="grey" type="text" pattern="gr[ae]y" value="grey"
40 /><input id="empty-gray-or-grey" type="text" pattern="gr[ae]y" value=""
41 /><input id="mismatch-1" type="text" pattern="((4\.[0-3])|(2\.[0-3]))" value="Something 4.0"
42 /><input id="mismatch-2" type="text" pattern="\w" value="*"
43 /><input id="mismatch-3" type="email" pattern="[0-9]" value="something"
44 /><input id="mismatch-4" type="text" pattern=".{5,}" value="1234"
45 /><input id="mismatch-5" type="text" pattern=".{5,}" value="*)$!"
46 /><input id="mismatch-6" type="text" pattern=".{5,}" value="(^$!"
47 /><input id="mismatch-7" type="text" pattern="0|1|2|3|4|5|6|7|8|" value="a"
48 /><input id="mismatch-8" type="text" pattern="^(foo).*" value="a foo"
49 /><input id="mismatch-9" type="text" pattern="\w" value="134"
50 /><input id="mismatch-10" type="text" pattern="\." value="\."
51 /><input id="mismatch-11" type="text" pattern="\)\(" value=") ("
52 /><input id="mismatch-12" type="text" pattern="ab" value="a"
53 /><input id="mismatch-13" type="text" pattern="ab" value="b"
54 /><input id="mismatch-14" type="text" pattern="^ab" value="abc"
55 /><input id="mismatch-15" type="text" pattern="^\(" value="(something"
56 /><input id="mismatch-16" type="text" pattern="\)\\" value="something)\"
57 /><input id="mismatch-17" type="text" pattern="...\)\([b]{3}" value="adf)(bbbTEST"
58 /><input id="mismatch-18" type="text" pattern="foo\\" value="food"
59 /><input id="mismatch-19" type="text" pattern="^" value="wrong"
60 /><input id="mismatch-20" type="text" pattern="$" value="wrong"
61 /><input id="mismatch-21" type="text" pattern="f(o|e)\1" value="foe"/>
63 <input id="invalid-01" type="text" pattern=")foo(" value="foo"/>
64 <input id="invalid-02" type="text" pattern=")foo(" value="foobar"/>
65 <input id="invalid-03" type="text" pattern=")foo(" value=")foo"/>
66 <input id="invalid-04" type="text" pattern="foo\" value="foo\"/>
67 <input id="invalid-05" type="text" pattern="[0-9" value="1"/>
68 <input id="invalid-06" type="text" pattern="[0-9" value="a"/>
70 <input id="empty-pattern-mismatch" type="text" pattern="" value="Lorem Ipsum"
71 /><input id="disabled" pattern="[0-9][A-Z]{3}" value="00AA" disabled /></div>
72 <script language="JavaScript" type="text/javascript">
73 function patternMismatchFor(id) {
74 return document.getElementById(id).validity.patternMismatch;
77 description("This test checks validity.patternMismatch.");
79 shouldBeFalse('patternMismatchFor("simple")');
80 shouldBeFalse('patternMismatchFor("no-pattern-and-no-value")');
81 shouldBeFalse('patternMismatchFor("ip-address")');
82 shouldBeFalse('patternMismatchFor("email-address")');
83 shouldBeTrue('patternMismatchFor("wrong-email-address")');
85 shouldBeFalse('patternMismatchFor("match-1")');
86 shouldBeFalse('patternMismatchFor("match-2")');
87 shouldBeFalse('patternMismatchFor("match-3")');
88 shouldBeFalse('patternMismatchFor("match-4")');
89 shouldBeFalse('patternMismatchFor("match-5")');
90 shouldBeFalse('patternMismatchFor("match-6")');
91 shouldBeFalse('patternMismatchFor("match-7")');
92 shouldBeFalse('patternMismatchFor("match-8")');
93 shouldBeFalse('patternMismatchFor("match-9")');
94 shouldBeFalse('patternMismatchFor("match-10")');
95 shouldBeFalse('patternMismatchFor("match-11")');
96 shouldBeFalse('patternMismatchFor("match-12")');
97 shouldBeFalse('patternMismatchFor("match-13")');
98 shouldBeFalse('patternMismatchFor("match-14")');
99 shouldBeFalse('patternMismatchFor("match-15")');
100 shouldBeFalse('patternMismatchFor("match-16")');
101 shouldBeFalse('patternMismatchFor("match-17")');
102 shouldBeFalse('patternMismatchFor("match-18")');
103 shouldBeFalse('patternMismatchFor("match-19")');
104 shouldBeFalse('patternMismatchFor("match-20")');
106 shouldBeTrue('patternMismatchFor("wrong-gray-or-grey")');
107 shouldBeFalse('patternMismatchFor("gray")');
108 shouldBeFalse('patternMismatchFor("grey")');
109 shouldBeFalse('patternMismatchFor("empty-gray-or-grey")');
111 shouldBeTrue('patternMismatchFor("mismatch-1")');
112 shouldBeTrue('patternMismatchFor("mismatch-2")');
113 shouldBeTrue('patternMismatchFor("mismatch-3")');
114 shouldBeTrue('patternMismatchFor("mismatch-4")');
115 shouldBeTrue('patternMismatchFor("mismatch-5")');
116 shouldBeTrue('patternMismatchFor("mismatch-6")');
117 shouldBeTrue('patternMismatchFor("mismatch-7")');
118 shouldBeTrue('patternMismatchFor("mismatch-8")');
119 shouldBeTrue('patternMismatchFor("mismatch-9")');
120 shouldBeTrue('patternMismatchFor("mismatch-10")');
121 shouldBeTrue('patternMismatchFor("mismatch-11")');
122 shouldBeTrue('patternMismatchFor("mismatch-12")');
123 shouldBeTrue('patternMismatchFor("mismatch-13")');
124 shouldBeTrue('patternMismatchFor("mismatch-14")');
125 shouldBeTrue('patternMismatchFor("mismatch-15")');
126 shouldBeTrue('patternMismatchFor("mismatch-16")');
127 shouldBeTrue('patternMismatchFor("mismatch-17")');
128 shouldBeTrue('patternMismatchFor("mismatch-18")');
129 shouldBeTrue('patternMismatchFor("mismatch-19")');
130 shouldBeTrue('patternMismatchFor("mismatch-20")');
131 shouldBeTrue('patternMismatchFor("mismatch-21")');
133 shouldBeFalse('patternMismatchFor("empty-pattern-match")');
134 shouldBeTrue('patternMismatchFor("empty-pattern-mismatch")');
136 shouldBeFalse('patternMismatchFor("invalid-01")');
137 shouldBeFalse('patternMismatchFor("invalid-02")');
138 shouldBeFalse('patternMismatchFor("invalid-03")');
139 shouldBeFalse('patternMismatchFor("invalid-04")');
140 shouldBeFalse('patternMismatchFor("invalid-05")');
141 shouldBeFalse('patternMismatchFor("invalid-06")');
143 shouldBeFalse('patternMismatchFor("disabled")');
145 document.body.removeChild(document.getElementById('container'));