我的代碼:preg_grep匹配不正確?
$q = array('r%and_dy', 'cat09', '##$%%^');
$result = preg_grep('/[a-zA-Z0-9]+/', $q);
print_r($result);
使用JavaScript的相同的正則表達式將只匹配「cat09」,但在PHP中,這將返回:
Array
(
[0] => r%and_dy
[1] => cat09
)
我有什麼寫那麼它只返回'cat09'?
編輯:你想看到的JavaScript。帶有'g'標誌的JavaScript匹配函數與php中preg_grep的等價函數相同,但它不接受數組 - 這裏是一個小提琴,每個項目作爲一個單獨的行。 http://jsfiddle.net/64A5w/
編輯:jsfiddle已關閉,所以這裏是JavaScript的等價物。首先我應該提到,preg_grep
只接受數組,並自動返回全局匹配(它不接受g標誌)。 Javascript match
只接受字符串,並且必須指定g。
var str = 'r%and_dy';
var result = str.match(/[a-zA-Z0-9]+/g);
document.write(result);
其中顯示:r,and,dy
。 PHP的等價物將通過preg_grep $str = array('r%and_dy')
。它應該返回相同的數組但它返回r%and_dy
作爲單個匹配(如上所示)。
'使用與javascript相同的正則表達式'向我們展示您的JavaScript代碼,更改是您沒有使用/ g標誌使它只匹配一次。 –
在JavaScript中使用它意味着什麼?顯示你的JS代碼 –
或者用'^ $'來錨定JavaScript。如果你不想匹配'r%and_dy',使用'/^[a-zA-Z0-9] + $ /' –