4

ユーザーからの入力として文字のリストを受け入れ、残りを拒否したい。フォーマットされた文字列を受け入れるか、文字/文字列が欠落しているかどうかを確認できます。しかし、他のすべての文字を拒否しながら、文字のセットのみを受け入れる方法. これを行うには preg_match を使用したいと思います。

例: 許容される文字は次のとおりです: a..z、A..Z、-、' ' ユーザーはこれらの文字を任意の順序で入力できる必要があります。ただし、これらの文字以外の使用を許可してはなりません。

4

4 に答える 4

8

否定された文字クラスを使用します: [^A-Za-z-\w]

これは、ユーザーがその文字クラス以外の何かを入力した場合にのみ一致します。

if (preg_match('/[^A-Za-z-\w]/', $input)) { /* invalid charcter entered */ }
于 2009-11-22T15:11:26.393 に答える
2

[a-zA-Z-\w]

[] ブラケットは、文字をグループ化し、1 つの文字のように動作させるために使用されます。[...]+ などのようなこともできます az、AZ、0-9 範囲を定義するので、アルファベット全体を書く必要はありません

于 2009-11-22T15:10:27.470 に答える
1

次の正規表現を使用できます: ^[a-zA-Z -]+$.

は文字列の^先頭に一致するため、文字列の途中に一致することはありません123abc。同様に、 は文字列の$末尾に一致し、 の途中に一致することはありませんabc123
括弧は、その中のすべての文字に一致します。a-zと の間のすべての文字を意味azます。-文字自体に合わせて、最後に置きます。( [19-]a 1、 a 9、または a に一致し-ます。と[1-9]の間のすべての文字に一致し、 には一致しません)。 は、その前にある 1 つ以上のものに一致するように指示します。をに置き換えることができます19-
++*これは、空の文字列にも一致させたい場合は 0 以上を意味します。

詳細については、こちらを参照してください。

于 2009-11-22T15:10:40.263 に答える
0

許可された文字を規定する否定された^文字クラスを見て、一致をテストします。[]

$pattern = '/[^A-Za-z\- ]/';
if (preg_match($pattern, $string_of_input)){
   //return a fail
}

//Matt beat me too it...
于 2009-11-22T15:13:46.487 に答える