2010-12-31 13 views
24

特定の一致の後に来るフレーズと一致するように正規表現を使用する方法を知りました。同様に:Javascript Regexp - 特定のフレーズの後に一致する文字

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var match = /phrase=.*/; 

文字列の末尾にphrase=から一致するが、は、文字列を変更することなくphrase=後のすべてを取得することが可能であるということ?

答えて

39

capture groups(括弧で示す)を使用します。

matchまたはexec関数を使用して正規表現を実行すると、キャプチャグループによってキャプチャされた部分文字列で構成される配列が返されます。その配列を介して取得したものにアクセスできます。例:

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var myRegexp = /phrase=(.*)/; 
var match = myRegexp.exec(phrase); 
alert(match[1]); 

または

var arr = phrase.match(/phrase=(.*)/); 
if (arr != null) { // Did it match? 
    alert(arr[1]); 
} 
+1

は、その 'match [1]'を使わないようにする方法はありませんか? – Vandervals

8
phrase.match(/phrase=(.*)/)[1] 

戻り

"thisiswhatIwantmatched" 

ブラケットは、いわゆる捕捉グループを指定します。キャプチャグループの内容は、結果の配列に格納され、1から始まります(0は完全一致です)。

+4

仕事を期待 '.match'は'ヌルを返し実現することが重要です'試合が失敗した場合は、最初のインデックスを取得しようとする前にそれをテストすることをお勧めします。また、そのkey = value文字列に複数のフェーズがある場合は、正規表現を '/ phrase =(。*?)(; | $)/'に変更することもできます。区切り文字です。さらに、RegExコンストラクタを使ったメソッドでこれを抽象化することもできます... – Hemlock

0

これを試してみましょうが、私はそれが

var p = /\b([\w|\W]+)\1+(\=)([\w|\W]+)\1+\b/; 
 
console.log(p.test('case1 or AA=AA ilkjoi')); 
 
console.log(p.test('case2 or AA=AB')); 
 
console.log(p.test('case3 or 12=14'));

関連する問題