私はもう試した:
print_r(preg_match("[A-Za-z\\-]", $str));
そして、私は偽になっています。私は正規表現があまり得意ではありませんが、http://regexpal.com/で動作するようです
ここで何か不足していますか?
編集:例えば$str = zREBsZtyvw
私はもう試した:
print_r(preg_match("[A-Za-z\\-]", $str));
そして、私は偽になっています。私は正規表現があまり得意ではありませんが、http://regexpal.com/で動作するようです
ここで何か不足していますか?
編集:例えば$str = zREBsZtyvw
この式により、文字列に空白のない大文字、小文字、またはハイフンが 1 つ以上含まれていることが保証されます。
^[A-Za-z\\-]{1,}$
(^[A-Za-z\\-]{1,}$)
次のように一致します。
(
グループ
^
文字列の先頭
[A-Za-z\\-]{1,}
任意の文字: 'A' から 'Z'、'a' から 'z'、'\'、'-' (少なくとも 1 回 (可能な限り多く一致))
$
オプションの \n の前、および文字列の末尾
)
グループ化の終了
<?php
$sourcestring="zREBsZtyvw";
preg_match_all('/^[A-Za-z\\-]{1,}$/i',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
$matches Array:
(
[0] => Array
(
[0] => zREBsZtyvw
)
)
はい、アンカー (^
および) を使用して、これらの文字のみで文字列を開始および終了$
するように指定します。
print_r(preg_match("/^[A-Za-z\\-]$/", $str));
^ ^
実際、パターンの最初と最後にエスケープ文字 (/) がありません。グループ内の 1 文字のみに一致する [] を使用しています。
最良のパターンは、繰り返しと開始/終了アンカーを使用することです
"/^[a-zA-Z-]*$/"
print_r(preg_match("/^[a-zA-Z-]*$/", $str));