7

新しい HTML5 パターン属性を使用して、入力フォームの事前検証を行いたいと考えています。私のデータセットは「ドメイン名」なので、<input type="url">正規表現プリセットは適用されません。

しかし、A-Za-zIDN (国際化ドメイン名) がひどいので、私は を使用しません。

質問:<input pattern="">英語以外のランダムな文字の検証に使用する方法はありますか?

もちろん試してみ\wましたが、ラテン語でしか機能しません...

たぶん誰かが、\xNN-\xNNすべての unicode アルファ文字の入力を保証するセット、または別の方法を持っているのでしょうか?

編集: 「この質問には既に回答がある可能性があります:」 -いいえ、回答はありません。

4

2 に答える 2

3

Based on my testing, HTML5 pattern attributes supports Unicode character code points in the exact same way that JavaScript does and does not:

  • It only supports \u notation for unicode code points so \u00a1 will match '¡'.
  • Because these define characters, you can use them in character ranges like [\u00a1-\uffff]
  • . will match Unicode characters as well.

You don't really specify how you want to pre-validate so I can't really help you more than that, but by looking up the unicode character values, you should be able to work out what you need in your regex.

Keep in mind that the pattern regex execution is rather dumb overall and isn't universally supported. I recommend progressive enhancement with some javascript on top of the pattern value (you can even re-use the regex more or less).

As always, never trust user input - It doesn't take a genius to make a request to your form endpoint and pass more or less whatever data they like. Your server-side validation should necessarily be more explicit. Your client-side validation can be more generous, depending upon whether false positives or false negatives are more problematic to your use case.

于 2014-08-02T02:57:06.953 に答える
0

これがあなたの聞きたいことではないことはわかっていますが...

HTML5 の pattern 属性は、実際にはプログラマー向けではなく、ユーザー向けです。したがって、 の残念な制限を考慮するとpattern、「緩い」パターンを提供するのが最善です。これは、偽陰性をもたらさず、少数の偽陽性を許容するものです。この問題に遭遇したとき、最善の方法は、ブラックリスト + いくつかの最小要件で構成されるパターンであることがわかりました。うまくいけば、それはあなたの場合に行うことができます。

于 2013-08-20T02:13:36.010 に答える