我的代码: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] + $ /' –