[英]preg_grep matching incorrectly?
我的代碼:
$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
僅接受數組,並自動返回全局匹配(不接受ag標志)。 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
作為單個匹配項返回(如上所示)。
您的問題是您要匹配包含一個或多個字母數字字符的字符串。 嘗試:
$q = array('r%and_dy', 'cat09', '##$%%^');
$result = preg_grep('/^[a-zA-Z0-9]+$/', $q);
print_r($result);
^
和$
表示字符串的開頭和結尾。
從手冊 :
返回由與給定模式匹配的輸入數組元素組成的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.