文字列に数字、文字、ハイフン、またはアンダースコアのみが含まれているかどうかを確認する正規表現が必要です
$string1 = "This is a string*";
$string2 = "this_is-a-string";
if(preg_match('******', $string1){
echo "String 1 not acceptable acceptable";
// String2 acceptable
}
コード:
if(preg_match('/[^a-z_\-0-9]/i', $string))
{
echo "not valid string";
}
説明:
正規表現の末尾にある 'i'修飾子は、A-Zを実行する前にコードに大文字を追加する必要があることを指定しない場合、 '大文字と小文字を区別しない'ためのものです。
if(!preg_match('/^[\w-]+$/', $string1)) {
echo "String 1 not acceptable acceptable";
// String2 acceptable
}
以下は、UTF-8の世界で受け入れられている答えの1つです。
if (!preg_match('/^[\p{L}\p{N}_-]+$/u', $string)){
//Disallowed Character In $string
}
説明:
ハイフンがクラス定義の最後の文字である場合、エスケープする必要はありませんであることに注意してください。ハイフンではなく範囲文字として表示されるため、クラス定義の他の場所にダッシュが表示される場合は、エスケープする必要がありますです。
str_Word_count() を使用したファンキーな非正規表現メソッドを次に示します。
if($string===str_Word_count($string,1,'-_0...9')[0]){
// ^^^^^^^--- characters to allow, see documentation
echo "pass";
}else{
echo "fail";
}
デモリンク を表示します。ここで、異なる入力が異なる出力配列をどのようにもたらすかを示します。