簡體   English   中英

PHP中的RegEx與preg_match

[英]RegEx in PHP with preg_match

我有一個reg exp,應該檢查名稱中是否有非法字符。 允許的字符為0-9,az,AZ,midscore(-)和下划線(_)。

這是功能

function validate_playername($playername){
    if (preg_match('/^[0-9A-Z-_]$/i',$playername)) {
        return true;
    } else{
        return false;
    }

}

像這樣調用函數

if (validate_playername($addplayer)) {
    echo "valid player Name";
} else {
    echo "Invalid Player Name";
}

但是,當我輸入一個正確的名稱(例如Velocity28)時,它將返回為無效的玩家名稱。 我的reg exp錯誤嗎?

/^[0-9A-Z-_]$/i僅匹配一個字符。

附加+以匹配多個字符:

'/^[-0-9A-Z_]+$/i'
  • 感動-開始。

更新

正如Enissay所說,可以使用\\w簡化正則表達式:

'/^[-\w]+$/'

要在字符類中使用文字減號,必須使用反斜杠對其進行轉義:

   function validate_playername($playername){
    if (preg_match('/^[0-9A-Z\-_]$/i',$playername)) {
        return true;
    } else{
        return false;
    }

   }

有關更多信息,請參見http://php.net/manual/de/regexp.reference.character-classes.php

您還可以將減號移動到字符范圍定義不能包含的位置,例如,使其成為字符類中的第一個字符。

暫無
暫無

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

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