1

私のプログラムphpでは、ユーザーが「dgdh」、「sgfdgdfg」などのアルファベット以外の文字を入力しないようにしますが、数字や「7657」や「gfd(-」など)は入力しません。 "fd54" この関数をテストしましたが、すべてのケースをカバーしているわけではありません:

preg_match("#[^0-9]#",$_POST['chaine'])

どうすればそれを達成できますか、事前に感謝します

4

3 に答える 3

0

文字のみ一致(空白なし) :

preg_match("#^[a-zA-Z]+$#",$_POST['chaine'])

説明:

^         # matches the start of the line
[a-zA-Z]  # matches any letter (upper or lowercase)
+         # means the previous pattern must match at least once
$         # matches the end of the line

空白あり:

preg_match("#^[a-zA-Z ]+$#",$_POST['chaine'])
于 2012-11-17T16:36:42.477 に答える
0

2つのこと。まず、数字以外の文字を照合します。それは明らかに文字と同じではありません。[a-zA-Z]そのため、代わりにor[a-z]と大文字と小文字を区別しない修飾子を使用できます。

次に、それらの文字の 1 つだけを見つけようとします。文字列全体がこれらで構成されているとは主張しません。代わりにこれを使用してください:

preg_match("#^[a-z]*$#i",$_POST['chaine'])
于 2012-11-17T16:37:13.780 に答える
0

最も簡単なのは

preg_match('/^[a-z]+$/i', $_POST['chaine'])

i修飾子は大文字と小文字を区別しません。+少なくとも 1 つのアルファベットが入力されるようになっています。*空の文字列を許可する場合は、に変更できます。アンカーは、文字列全体がアルファベットに過ぎないこと^を強制します。$(それぞれ、文字列の先頭と末尾を表します)。


whitespace を許可する場合は、次を使用できます。

文字列の最初または最後にある空白のみ:

preg_match('/^\s*[a-z]+\s*$/i', $_POST['chaine'])

どこでも:

preg_match('/^[a-z][\sa-z]*$/i', $_POST['chaine'])    // at least one alphabet

スペース文字のみが許可されていますが、他の空白は許可されていません:

preg_match('/^[a-z][ a-z]*$/i', $_POST['chaine'])
于 2012-11-17T16:39:22.603 に答える