2011-10-23 96 views
1

所以我想根據它是否只包含語法字符以及數字和字母來驗證字符串(基本上是AZ,az,0-9,加上句點(。),逗號(),分號(:),分號(;),連字符( - ),單引號('),雙引號(「)和圓括號()我得到一個PHP錯誤,說:」編譯失敗:範圍不按順序?在性格CLAS」我應該用什麼正則表達式代碼使用正則表達式驗證正則句語法

這是我目前使用的一個: ^[a-zA-Z0-9_:;-()'\" ]*^

+0

你這是什麼意思是「語法人物」? –

回答

2

你需要逃避-那麼這將成爲這個^[a-zA-Z0-9_:;\-()'\" ]*-在字符集內有一個特殊的含義,所以它需要被轉義。最後也不需要^。正則表達式也可以用\w這樣

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

\w匹配字母,數字和下劃線簡化。

+0

啊,沒有意識到我必須逃脫連字符。謝謝。只要允許我接受,您的回答就會被接受。 – ShoeLace1291

+0

@ ShoeLace1291如果你使用's代替''''''''更好,因爲它可能更清楚地涉及空間。另外,沒有必要轉義''' –

2

問題是你在正則表達式中有一個破折號字符,解析器正在將它解釋爲一個範圍而不是文字破折號。您可以修復,通過:

  • 用反斜槓(^[a-zA-Z0-9_:;\-()'\" ]*^
  • 擺脫它把它在啓動(^[-a-zA-Z0-9_:;()'\" ]*^
  • 在最後把它(^[a-zA-Z0-9_:;()'\" -]*^