[英]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.