私のコード:
$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 の match 関数は、php の preg_grep と同等の関数ですが、配列を受け入れません。これはフィドルで、各項目が個別の行になっています。http://jsfiddle.net/64A5w/
EDIT:jsfiddleがダウンしているため、これに相当するJavaScriptがあります。最初に言及する必要があるのは、preg_grep
配列のみを受け入れ、グローバル マッチを自動的に返すことです (ag フラグは受け入れません)。Javascriptmatch
は文字列のみを受け入れ、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
が、単一の一致として返されます (上記のように)。