2011-07-20 28 views
1

文字列に少なくとも1つの文字がセットと異なる場合に一致する正規表現(PHPで)を構築する必要があります。ここに私のセットです:Z及びZ、数字、およびáéíóúüÁÉÍÓÚÜ¡¿へのアクセント付き文字のREGEX

- :!?

だから、この言葉が一致していなければならない:セバスティアン この試合を:セバスチャン

私はreprhased varchar256のコメントによる質問。ところで、例が冗長な命令と異なる場合は、その例をドキュメント作成者の真の意図としてください。

+0

特定のアクセント記号付き文字を許可する理由は何ですか?そうすれば、例えばロケールの使用など、よりシンプルなものになる可能性があります。 – Wrikken

+1

あなたが言及したセットの1つと一致し、そのセットにアクセントのない文字が含まれている場合、文字列は一致しないと言います。しかし、あなたは「Sebastiàn」を例として挙げました。それはちょっと混乱します。 – varchar255

答えて

4
preg_match('/[^A-Za-z0-9áéíóúüÁÉÍÓÚÜ¡¿!?\-:]/', ...); 

注カッコ内^ - 試合を反転ので、この正規表現は括弧の中リストされていない少なくとも1つの文字を含む任意の文字列に一致します。

0

文字設定されたパターンを使用しますpreg_match('/[^\wáéíóúüÁÉÍÓÚÜ¡¿!?-:]/')

+0

ユニコードフラグの追加を検討してください。 – phant0m

0
$string = "Sebastiàn"; 

$clean_string = preg_replace("/[^a-zA-ZáéíóúüÁÉÍÓÚÜ¡¿!?\\-:]*/",$string); 

は、文字クラスにダッシュを脱出することを確認してください。

関連する問題