0

preg_match()PHP を使用して文字列から変数シーケンスを抽出する方法を理解しています。ただし、一致させる必要がある変数が2 つある場合はどうすればよいかわかりません。

ここに私が興味を持っているコードがあります:

$string1 = "help-xyz123@mysite.com";
$pattern1 = '/help-(.*)@mysite.com/'; 
preg_match($pattern1, $string1, $matches);
print_r($matches[1]); // prints "xyz123"

$string2 = "business-321zyx@mysite.com";

したがって、基本的には、2 つのパターンを抽出する方法を考えています。1) 文字列の最初の部分が「ヘルプ」または「ビジネス」であるかどうか、2) 2 番目の部分が「xyz123」と「zyx321」のどちらであるか。

オプションのボーナス質問は、JS で書かれた答えはどのようになりますか? 正規表現 (つまり、スラッシュを含むコード/..../) が PHP と JS (またはその他の言語) で常に同じかどうかは、私にはまったくわかりませんでした。

4

2 に答える 2

1

解決策は実際には非常に簡単です。一致させたいパターンごとに、そのパターンを括弧で囲みます(...)。したがって、任意のパターンを抽出するには、既に使用したものを使用し(.*)ます。「ヘルプ」と「ビジネス」を簡単に区別する|には、正規表現パターンで次を使用できます。

/(help|business)-(.*)@mysite.com/

上記の正規表現は、両方の形式に一致する必要があります。(help|business)基本的に、一致helpまたはのいずれかを言いますbusiness

したがって、最終的な答えは次のとおりです。

$string1 = "help-xyz123@mysite.com";
$pattern1 = '/(help|business)-(.*)@mysite.com/'; 
preg_match($pattern1, $string1, $matches);
print_r($matches[1]); // prints "help"
echo '<br>';
print_r($matches[2]);  // prints "xyz123"

同じ正規表現パターンが Javascript で使用できるはずです。微調整する必要はありません。

于 2012-09-30T14:03:37.320 に答える
1

はい、ケマルは正しいです。同じパターンを JavaScript で使用できます。

var str="business-321zyx@mysite.com";
var patt1=/(help|business)-(.*)@mysite.com/;
document.write(str.match(patt1));

異なる関数からの戻り値に注意してください。PHP は、Javascript でこのコードよりも多くの情報を含む配列を返します。

于 2012-09-30T14:14:17.320 に答える