我剛剛對一個文件進行了一些編輯,當測試它似乎不起作用時,我做了一些調試,發現preg_match返回0,我查看了它並看不到有什麼問題,也因爲我還沒有觸及該文件的這一部分,我很困惑,到底發生了什麼......preg_match函數的問題
<?php
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123');
?>
這是我使用的用於調試的代碼片段,我猜猜我的模式是錯誤的,但我可能是錯誤的。
謝謝,如果 P110
我剛剛對一個文件進行了一些編輯,當測試它似乎不起作用時,我做了一些調試,發現preg_match返回0,我查看了它並看不到有什麼問題,也因爲我還沒有觸及該文件的這一部分,我很困惑,到底發生了什麼......preg_match函數的問題
<?php
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123');
?>
這是我使用的用於調試的代碼片段,我猜猜我的模式是錯誤的,但我可能是錯誤的。
謝謝,如果 P110
根據您的評論:
我只是在尋找它來檢查,如果有一個大寫字母,小寫字母和一個數字,但是從回覆,因爲我的檢查模式的順序
有一試:
preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]+$/', $input_string);
其中
(?=.*[A-Z])
檢查有至少一個大寫
(?=.*[a-z])
檢查有至少一個小寫
(?=.*[0-9])
檢查至少有一個數位
[A-Za-z0-9]+
檢查僅存在這些字符。
(?=...)
被稱爲lookahead。
你的正則表達式的第一次測試有從A資本字母A到Z,然後,如果有從到z小寫字母,然後如果有數字。由於你的字符串以小寫字母開頭,因此不匹配。
我認爲要做到這一點
[A-Za-z0-9]+
或者,如果你需要,你的字符串,其lowecase字符串,則大寫字符串,然後數字開頭,你應該改變的正則表達式。
[a-z]+[A-Z]+[0-9]+
這樣你的當前字符串也適合正則表達式。
的問題是字母的順序: 試試這個:
echo preg_match('/[a-z]+[A-Z]+[0-9]+/', 'testeR123');
或者:
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'Rtest123');
或者簡單
echo preg_match('/[A-Z]+[0-9]+/i', 'testeR123');
<?php
preg_match('/([A-Za-z0-9]+)/', 'testeR123', $match);
echo $match[1];
?>
謝謝,它的工作,但當我試圖實現它變得有趣,但我已經找到了答案,所以非常感謝 – P110
http://regex101.com/r/zH4tA5 –
你對這個preg_match有什麼期待?你想匹配的模式是什麼? –
這應該與Tester123相匹配,因爲你的正則表達式首先要查找大寫字母 –