/[pub]/suikawiki/sw4data/ids/6/921.txt
Suika

Contents of /suikawiki/sw4data/ids/6/921.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations) (download)
Tue Jan 4 23:45:35 2011 UTC (14 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1 wakaba 1.2
2    
3     * [CODE(HTMLa)@en[pattern]] 属性 (HTML)
4    
5     [4]
6     [CODE(HTMLe)@en[[[input]]]] [[要素]]と
7     [CODE(HTMLe)@en[[[textarea]]]] [[要素]]の
8     [DFN[[CODE(HTMLa)@en[[[pattern]]]] [[属性]]]]は、
9     [[値]]が[[一致]]しなければならない[[パターン]]を指定します。
10     [SRC@en[WF2 2.6]]
11    
12     [6]
13     :状態:[[WHATWG]] [[WD]]
14     :[[要素型]]:
15     [CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]],
16     [CODE(HTMLe)@en[[QN[[[textarea]]] [http://www.w3.org/1999/xhtml]]]]
17     :[CODE(DOMa)@en[[[type]]]]:
18     [CODE(HTML)@en[[[text]]]],
19     [CODE(HTML)@en[[[password]]]],
20     [CODE(HTML)@en[[[url]]]],
21     [CODE(HTML)@en[[[email]]]],
22     [CODE(HTMLe)@en[[[textarea]]]]
23     :[[属性名]]:[CODE(HTMLa)@en[[[pattern]]]]
24     ([Q@en[[[pattern]]]] ([Q@en[[[パターン]]]]) より)
25     :[[属性値]]:[[ECMAScript]] [[正規表現]] (>>5)
26     :[[既定値]]:制約なし (>>7)
27    
28     [3] 仕様書:
29     - [[Web Forms 2.0]]
30     -- [CSECTION@en[2.6. The [CODE(HTMLa)@en[[[pattern]]]] attribute]]
31     <IW:WF2:"#the-pattern">
32    
33    
34     ** 属性値
35    
36     [5]
37     [CODE(HTMLa)@en[[[pattern]]]] [[属性値]]は、
38     [[ECMA 262]] 第3版で規定されている[[正規表現]]です。
39     [SRC@en[WF2 2.6]]
40    
41     [10]
42     ただし、[[利用者エージェント]]は、
43     [[値]]全体に対して[[一致]]するか検査[['''しなければなりません''']]。
44     つまり、最初に [CODE(JS)@en[[[^]][[(?:]]]] が、最後に
45     [CODE(JS)@en[[[)]][[$]]]] があるものとして扱われます。
46     また、[[旗]] [CODE@en[[[global]]]], [CODE@en[[[ignoreCase]]]],
47     [CODE@en[[[multiline]]]] はいずれも無効と[['''しなければなりません''']]。
48     [SRC@en[WF2 2.6]]
49    
50     ;;
51     [11]
52     全体と[[一致]]するとしたのは、
53     ほとんどの場合[[著者]]はそうしたいであろうこと、
54     [[著者]]は一部とだけ[[一致]]を確認したいが[[利用者エージェント]]は全体と[[一致]]を試みるなら実際に試してみれば意図通りに動作しないことにすぐ気づくが、
55     逆に[[著者]]は全体と[[一致]]を確認したいが[[利用者エージェント]]は一部と[[一致]]を試みるとしたら実際に試してみても気づきにくいことからです。
56     [SRC@en[WF2 2.6]]
57    
58     ;;
59     [12]
60     [[旗]] [CODE@en[[[multiline]]]] が無効なので、
61     [CODE(JS)@en[[[.]][[*]]]] は[[改行]]と[[一致]]しません。
62     代わりに、 [CODE(JS)[[['''[''']][[\s]][[\S]][[''']''']][[*]]]]
63     などを使えば[[改行]]も含めて[[一致]]させられます。
64     [SRC@en[WF2 2.6]]
65    
66     ;;
67     [13]
68     [[ECMAScript]] の[[ソース・コード]]に記述する場合とは異なり、
69     [CODE(char)[[[/]]]] は特別な意味を持ちません。
70     (>>14) [SRC@en[WF2 2.6]]
71    
72     [7] '''既定値'''
73    
74     この[[属性]]が与えられなければ、
75     [[パターン]]の制約はないものとされます。
76     [SRC@en[WF2 2.6]]
77    
78     [18] '''誤り処理'''
79    
80     [[属性値]]が[[妥当]]な[[正規表現]]でない場合、
81     [[値]]の[[妥当性検証]]に関しては、
82     [CODE(HTMLa)@en[[[pattern]]]] [[属性値]]が与えられなかったかのように処理します。
83     [SRC@en[WF2 2.6]]
84    
85    
86    
87    
88     [[#comment]]
89    
90    
91     ** 提出
92    
93     [8]
94     [[フォーム]]を[[提出]]するためには、
95     [CODE(HTMLa)@en[[[pattern]]]] [[属性]]で指定された[[パターン]]に[[欄]]の[[値]]が[[一致]][['''しなければなりません''']]。
96     [SRC@en[WF2 2.6]]
97    
98     [15]
99     [CODE(HTML)@en[[[email]]]] と [CODE(HTML)@en[[[url]]]]
100     では、 [CODE(HTMLa)@en[[[type]]]] の定義上の[[値]]の制約に加え、
101     [CODE(HTMLa)@en[[[pattern]]]] の制約にも[[一致]][['''しなければなりません''']]。
102     [SRC@en[WF2 2.6]]
103    
104     [17]
105     [[利用者エージェント]]は、[[値]]が
106     [CODE(HTMLa)@en[[[pattern]]]] と[[一致]]しない場合、
107     [[旗]] [CODE(DOM)@en[[[patternMismatch]]]]
108     を設定[['''しなければなりません''']]。
109     [SRC@en[WF2 2.6]]
110    
111     ;; [CODE(HTMLa)@en[[[type]]]] による制約にも[[一致]]しない場合は、
112     [CODE(DOM)@en[[[typeMismatch]]]]
113     も設定[['''しなければなりません''']]。
114    
115     [19]
116     なお、[[値が選択されていない]][[欄]]は、
117     [CODE(HTMLa)@en[[[pattern]]]]
118     と[[一致]]する必要はありません。
119     [SRC@en[WF2 2.6]]
120    
121     [[#comment]]
122    
123    
124     ** 安全性
125    
126     [1] [[Web Forms 2.0]] では、[[利用者エージェント]]が、
127     [[安全性]]のために、[[著者]]が指定できる値の長さを制限することを勧めています。
128     例として、 [CODE(HTMLa)@en[[[pattern]]]] に指定した[[正規表現]]の[[評価]]に長くかかり過ぎるなら、
129     長さを制限すればよい、と述べています。
130    
131     ;; <IW:WF2:"#security">
132    
133     [[#comment]]
134    
135    
136     ** 関連
137    
138     [20]
139     [[著者]]は、 [CODE(HTMLa)@en[[[pattern]]]]
140     [[属性]]の説明を [CODE(HTMLa)@en[[[title]]]]
141     [[属性]]に含めるように[['''するべきです''']]。
142     [[利用者エージェント]]は、
143     [CODE(HTMLa)@en[[[pattern]]]] に[[一致]]しない時やその他適切な時に[[利用者]]に
144     [CODE(HTMLa)@en[[[title]]]] [[属性]]の[[内容]]を通知[['''して構いません''']]。
145     [SRC@en[WF2 2.6]]
146    
147     [22]
148     [CODE(HTMLa)@en[[[pattern]]]] [[属性]]と
149     [CODE(HTMLa)@en[[[title]]]] [[属性]]の両方を使用する場合、
150     [CODE(HTMLa)@en[[[title]]]] [[属性]]は[[パターン]]を説明[['''しなければなりません''']]。
151     [[利用者]]がその[[欄]]に入力するに当たって有用ならば、
152     他の情報も含めることもできます。
153     [SRC@en[WF2 2.6]]
154    
155     ;;
156     もし [CODE(HTMLa)@en[[[title]]]] が[[パターン]]の説明でなく、
157     単なる[[欄]]の名前にとどまっていると、
158     [Q[入力された内容は[[パターン]]に[[一致]]していません。誕生日。]]
159     のようにおかしなことになります。
160     [SRC@en[WF2 2.6]]
161    
162     [23]
163     [[利用者エージェント]]は、 [[tooltip]]
164     その他の方法で、[[誤り]]がなくとも [CODE(HTMLa)@en[[[title]]]]
165     を[[レンダリング]][['''して構いません''']]。
166     [[利用者]]は、[[誤り]]が起こったことを前提とする文言にしないように注意[['''するべきです''']]。
167     [SRC@en[WF2 2.6]]
168    
169     [[#comment]]
170    
171    
172     ** 例
173    
174     [2]
175     [PRE(HTML example code)[
176     pattern="[\x00-\x7F]+"
177     ]PRE]
178    
179     [CODE(HTML)@en[[[url]]]] や [CODE(HTML)@en[[[email]]]]
180     で使うと、 [[IDN]] の ([[IDNA]] [[符号化]]されていない)
181     [[ドメイン名]]の[[提出]]を阻止できます。
182    
183     ;; <IW:WF2:"#IDN">
184    
185     [9]
186     [PRE(HTML example code)[
187     <label> Credit Card Number:
188     <input type="text" pattern="[0-9]{13-16}" name="cc" />
189     </label>
190     ]PRE]
191    
192     [SRC@en[WF2 2.6]]
193    
194     [14]
195     [PRE(HTML example code)[
196     pattern="/etc/.+"
197     ]PRE]
198    
199     [PRE(HTML example code)[
200     pattern="\/etc\/.+"
201     ]PRE]
202    
203     [[ECMAScript]] の[[ソース・コード]]中とは異なり、
204     [CODE(char)[[[/]]]] は特別な意味を持ちません (>>13)。
205     ですから、この2つの例はいずれも同じ意味になります。
206    
207     [16] [SRC@en[WF2 2.6]]
208     [PRE(HTML bad example code)[
209     <form>
210     <p>
211     This form could never be submitted, as the following required field
212     can never be satisfied:
213     <input type="url" pattern="[^:]+" required="required" name="test"/>
214     </p>
215     </form>
216     ]PRE]
217    
218     この例では、[[値]]は [[IRI]] と[['''しなければなりません''']]
219     ([CODE(HTMLa)@en[[[type]]]] [CODE(HTML)@en[[[url]]]]) し、
220     [CODE(char)[[[:]]]] が含まれないように[['''しなければなりません''']]
221     ([CODE(HTMLa)@en[[[pattern]]]]) し、
222     [[値が選択されていない]]状態と[['''してはなりません''']]
223     ([CODE(HTMLa)@en[[[required]]]])。
224     これらの条件をすべて満たすことは ([[IRI]] の構文の定義上)
225     不可能なので、この[[フォーム]]は[[提出]]できません。
226    
227     ;; このように矛盾する制約が課されていても、
228     意味はありませんが、[[不適合]]とはなりません。
229     [SRC@en[WF2 2.6]]
230    
231     [21] [SRC@en[WF2 2.6]]
232     [PRE(HTML example code)[
233     <label> Part number:
234     <input pattern="[0-9][A-Z]{3}" name="part"
235     title="A part number is a digit followed by three uppercase letters."/>
236     </label>
237     ]PRE]
238    
239     [[利用者エージェント]]は、[[利用者]]に次のような通知を表示することができます
240     (>>20)。
241     [SRC@en[WF2 2.6]]
242    
243     > A part number is a digit followed by three uppercase letters.
244     > You cannot complete this form until the field is correct.
245    
246     [[#comment]]
247    
248    
249     ** メモ
250    
251     [[#comment]]
252    
253    
254 wakaba 1.3 * メモ
255    
256     [24] [CITE@en[Web Applications 1.0 r5738 Define <input type=email multiple pattern='...'> as applying to each e-mail address, not to the whole list.]]
257     ( ([TIME[2011-01-05 08:28:00 +09:00]] 版))
258     <http://html5.org/tools/web-apps-tracker?from=5737&to=5738>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24