簡體   English   中英

允許字符的正則表達式

[英]Regular expression for allowed characters

我需要檢查,如果我的PHP代碼中的字符串僅包含指定的字符列表。 但是由於其中一些可能需要花scape,我只是無法使其發揮作用。 我已經嘗試了所有方法,但是卻行不通...

所需的驗證是:

  • 0-9
  • AZ
  • z
  • 字符:。%^& ()$#@!/ -+ //

基本上,我想檢查是否有一個未知的ascii字符(我不知道是否已經有一個函數可以做到這一點)。

我的代碼現在是這樣的:

if(preg_match("/[A-Za-z0-9\.\#\-\+\*\\\/\=\_\%\$\(\)]/", $cmd) === false)

那么,所有字符都是特殊的嗎?

不,所有這些字符都不特殊。 如果不確定,可以讓PHP使用preg_quote()進行轉義:

$regex = '/[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']+/';
if( !preg_match( $regex, $cmd))

另外, preg_match()返回一個int ,並且您正在對布爾值執行=== ,因為它們永遠不會是同一類型,所以永遠不會成立。 您可以簡單地檢查if( !preg_match())

您可能在正則表達式的末尾缺少* 另外,您也可以將集合表示為[\\x00-\\x7F] (從此處獲取 )。

這應該工作:

[\x00-\x7F]*

if(preg_match("/[.%^&()$#@!/+-a-zA-Z\\d\\s]+/", $cmd) === false)並且是否需要錨if(preg_match("/^[.%^&()$#@!/+-a-zA-Z\\d\\s]+$/", $cmd) === false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM