1

PHP の preg_match_all を使用して、次の部分文字列をキャプチャしたいと思います。

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

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

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

preg_match_all("/([\w -]+)/u", $abigstring, $matches);
4

3 に答える 3

3

それは Unicode プロパティの仕事です:

preg_match_all("/([\p{L} -]+)/u", $abigstring, $matches);

\p{L}Unicode プロパティ "Letter" を持つ任意の文字に一致します。

于 2013-01-14T16:51:52.687 に答える
0

そうしたい方のために、動作しない上記のコードを修正します。

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

アンカー (^ と $) がありませんでした

編集:はるかに優れています。ハイフン/スペースが途中でのみ許可されている場合:

/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u
于 2013-10-02T10:33:33.143 に答える