0

preg_matchを使用して、以下を構成する部分文字列をキャプチャしたいと思います。

  • AZ、az、すべてのアクセント付き文字
  • スペース
  • ハイフン

数値文字を含む、文字列をキャプチャしてはなりません。

この例は近いですが、数値文字を含む文字列もキャッチします。

preg_match("/([\p{L} -]+)/u", $string)

同様の質問にはすでに回答がありましたが(上記のもの)、うまくいきません...

4

1 に答える 1

0

私があなたの問題を正しく理解している場合 (私にはわからないかもしれません)、単に^$文字を使用して、「一致はここで開始し、一致はここで終了する」ことを指定する必要があります。

/^([\p{L} -]+)$/u
 ^            ^

次にpreg_match、文字列に他に何もない場合にのみ true を返します。

デモ

編集

ハイフン/スペースが途中でのみ許可されている場合:

/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u

デモ

于 2013-10-02T09:45:15.523 に答える