0

次のような正規表現があります。

return ( ! preg_match("/^([-a-z_ -])+$/i", $str)) ? FALSE : TRUE;

入力が次のようになるように、ピリオドを許可するために追加する必要があります。

「セントオーステル」または「セントトーマス」

上記のルールにピリオドを追加するさまざまな方法を試しましたが、ページがクラッシュして空白のページが表示されるか、検証エラーが発生します。

私はこのようなことを試みましたが、役に立ちませんでした。

([-a-z_ -.])
([-a-z_ -\.])
([-a-z_ -])\.
(\.[-a-z_ -]) etc etc...

私はすべてを試しましたが、運がないようです-アイデアはありません

どうもありがとう

ジェームズ

4

1 に答える 1

1

3 つのポイント:

  1. 最初の正規表現は-2 回指定されているため冗長です。

  2. [a-z_ .-]動作するはずですが、a-zまとめて、-直後[または直前にする必要があります](そうでない場合は-、メタ文字と見なされます)。

  3. return !condition ? false : true;はすでにorを返しているためreturn condition;、に簡略化する必要があります (に簡略化する必要があるのと同じロジック)。conditiontruefalseif(!condition) {var = false;} else {var = true;}var = condition;

于 2013-01-15T15:50:56.080 に答える