簡體   English   中英

preg_grep匹配不正確?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM