2014-05-05 116 views
0

我剛剛對一個文件進行了一些編輯,當測試它似乎不起作用時,我做了一些調試,發現preg_match返回0,我查看了它並看不到有什麼問題,也因爲我還沒有觸及該文件的這一部分,我很困惑,到底發生了什麼......preg_match函數的問題

<?php 
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123'); 
?> 

這是我使用的用於調試的代碼片段,我猜猜我的模式是錯誤的,但我可能是錯誤的。

謝謝,如果 P110

+0

http://regex101.com/r/zH4tA5 –

+0

你對這個preg_match有什麼期待?你想匹配的模式是什麼? –

+0

這應該與Tester123相匹配,因爲你的正則表達式首先要查找大寫字母 –

回答

0

根據您的評論:

我只是在尋找它來檢查,如果有一個大寫字母,小寫字母和一個數字,但是從回覆,因爲我的檢查模式的順序

有一試:

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

+0

我會盡快嘗試,如果它做我正在尋找的疾病標記爲答案 – P110

+0

謝謝!這完美的作品! – P110

+0

@ P110:不客氣。 – Toto

0

你的正則表達式的第一次測試有從A資本字母A到Z,然後,如果有從到z小寫字母,然後如果有數字。由於你的字符串以小寫字母開頭,因此不匹配。

我認爲要做到這一點

[A-Za-z0-9]+ 

或者,如果你需要,你的字符串,其lowecase字符串,則大寫字符串,然後數字開頭,你應該改變的正則表達式。

[a-z]+[A-Z]+[0-9]+ 

這樣你的當前字符串也適合正則表達式。

0

的問題是字母的順序: 試試這個:

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');

0
<?php 
preg_match('/([A-Za-z0-9]+)/', 'testeR123', $match); 
echo $match[1]; 
?> 
+0

謝謝,它的工作,但當我試圖實現它變得有趣,但我已經找到了答案,所以非常感謝 – P110