2011-10-23 11 views
1

それで、文法上の文字と数字と文字だけを含むかどうかに基づいて文字列を検証したいと思います(基本的にはAZ、az、0-9、ピリオド(。)、コンマコンパイルが失敗したというPHPエラーが発生しています:範囲が不安定です。 。?文字CLAS」にどのような正規表現コード私はこれは私が現在使用しているものですRegexを使って普通の文章文法を検証する

を使用する必要があります。 ^[a-zA-Z0-9_:;-()'\" ]*^

+0

あなたを何「文法的な文字」を意味する? –

答えて

2

あなたは、この^[a-zA-Z0-9_:;\-()'\" ]*になると思われる-をエスケープする必要があります-は文字セット内で特別な意味を持ちますので、エスケープする必要があります。最後に^も必要ありません。正規表現は、この

^[\w:;()'"\s-]* 

\w一致文字、数字、およびアンダースコアのような\wを使用して簡素化することができます。

+0

ああ、私はハイフンを脱出しなければならないことを知らなかった。ありがとうございました。私がそれを受け入れることができるようになると、あなたの答えは受け入れられます。 – ShoeLace1291

+0

@ ShoeLace1291 ''の代わりに '\ s'を使うと、スペースが含まれていることがより明確になるので、より良いでしょう。また、 '' 'をエスケープする必要はありません –

2

問題は、パーザがリテラルダッシュではなく範囲として解釈している正規表現にダッシュ文字があることです。あなたは、修正することができるで:最後にそれを置くスタート(^[-a-zA-Z0-9_:;()'\" ]*^

  • でそれを置くバックスラッシュ(^[a-zA-Z0-9_:;\-()'\" ]*^
  • でそれをエスケープ

    • ^[a-zA-Z0-9_:;()'\" -]*^
  • 関連する問題