我環顧四周,我發現了很多教程。但他們都不能幫助我的情況。 這裏是我的腳本:如何使用preg_match不允許在前面和最後的空間,但允許在
if(!preg_match('/^[[email protected]#$%]+$/',$user_name)) {
echo"bad username";
}
此代碼不允許任何空間無論在了前面,最終還是在噹噹之間什麼。
我只想之間,但不允許在前端和中端。
任何人都可以幫我嗎?
我環顧四周,我發現了很多教程。但他們都不能幫助我的情況。 這裏是我的腳本:如何使用preg_match不允許在前面和最後的空間,但允許在
if(!preg_match('/^[[email protected]#$%]+$/',$user_name)) {
echo"bad username";
}
此代碼不允許任何空間無論在了前面,最終還是在噹噹之間什麼。
我只想之間,但不允許在前端和中端。
任何人都可以幫我嗎?
位你有
[[email protected]#$%]
匹配任何這些字符的+
指一個或多個。如果你想匹配或空間,只需添加一個空格到列表中,並且之前和現有的一個後放置一個分組,像這樣:
/^[[email protected]#$%][[email protected]#$% ]+[[email protected]#$%]$/
這樣做的副作用將是用戶名必須至少需要3個字符。如果你想允許較小的用戶名,你可能分裂檢查:
if(!preg_match('/^[[email protected]#$% ]+$/',$user_name) || preg_match('/^ /',$user_name) || preg_match('/ $/',$user_name)) {
的!preg_match('/^[[email protected]#$% ]+$/',$user_name)
確保用戶名只包含批准的字符,該preg_match('/^ /',$user_name)
檢查,看它是否以空格開始,和preg_match('/ $/',$user_name)
檢查,看看如果它以一個空格結束。
如果你想接受輸入的內容,並自動刪除任何開頭或結尾的空格,使用trim
功能。
使用修剪而不是省略文字的左邊和右邊的空格。
<?php
$username = trim($username);
//your code...
?>
我打算在5分鐘前提出建議,但他希望他preg_match仍然允許在兩者之間的空格,現在它不會。這並不能真正解決他的正則表達式。 –
您可以使用此:
/^[[email protected]#$%]++(?>[[email protected]#$%\s]+[[email protected]#$%]+)?+$/
或者這個,如果你想允許空字符串
/^(?>[[email protected]#$%]+(?>[[email protected]#$%\s]*[[email protected]#$%]+)?+)?+$/
其實卡西米爾等Hippolyte's答案(最後一個)也是工作完美。但我尊重喬先給了我答案,並有很多解釋。但是,謝謝你們。我讚賞它。 –
如果您要檢查在字符串中的第一和/或最後一個字符是否是空格,你也可以使用字符串函數像'strpos'或'substr'。 – ironcito