2016-04-20 8 views
0

私は許さ文字がどのように私は正規表現を反転させるのですか?

<?php 

$regex_char_appearance = '/([A-Za-z0-9 \-\.\,\']|(<br>))/'; 

?> 

(-ZA-Z0-9ドット、コンマ、ダッシュとシングルクォートとBRタグ)...その後、他のanytingの入力を確認するには、次の正規表現を使用しています私はユーザー入力をきれいにする正規表現を作成しようとしています。私はちょうどそう

<?php 

    $regex_char_appearance = '/(?!<br>)([^A-Za-z0-9 \-\.\,\'])/'; 

    $regex_char_appearance = '/([^A-Za-z0-9 \-\.\,\']|[^(<br>)])/'; 

    //remove anything other then alphabetic and allowed 
    $post_char_appearance = preg_replace($regex_char_appearance , '' , $post_char_appearance); 

?> 

...のような別のものを試してみましたので、目標は、-ZA-Z0-9その後、ドット、コンマ、ダッシュ、シングルクォートを他のものを削除することです、それは仕事を得ることができず、 preg_replaceで出力するbrタグ。

誰かが一緒に正規表現を組み合わせるのを助けることができますか?

+0

私は '[^ A-Za-z0-9。、 ' ] 'は、a-zA以外のものを削除するには十分でなければなりません - ** Z ** 0-9、ドット、コンマ、ダッシュ、シングルクォート* '
'はここで何をしているのですか?あなたは '
'以外のものとマッチしたいですか? –

+0

私の悪いところは、
でも許されていますが、< or >はありません。 –

+0

「〜[^ A-Za-z0-9。、 ' - ]〜' 'はうまくいくはずです。それじゃない? –

答えて

0

許可されていない文字を[^A-Za-z0-9.,'-]と一致させることができます(無効な文字はcharacter classで、クラスに定義されている文字以外は一致します)。 [A-z]がないことregex demo

注を参照してください

$regex_char_appearance = '~(<br\s*/?>)|[^A-Za-z0-9.,'-]~'; 
$post_char_appearance = preg_replace($regex_char_appearance, '$1' , $post_char_appearance); 

はそのまま、試合brタグを保持し、エスケープされていない括弧(grouping construct(...))のペアでそれをキャプチャし、backreference$1を復元するにはすべてのASCII文字に一致するだけでなく、これについてはこれ以上参照してくださいWhy is this regex allowing a caret?

関連する問題