2017-01-29 6 views
-2

例:JavaScriptの正規表現を取得一切引用符paramsはありません

var str = '2+3+name+"obj.name name"+"g233"'; 

私は、「変数値」「obj.name名」代わりにSTR内/「オブジェクトのプロパティ」と「g233」の文字列を取得する方法


出力のコメントは、これを実現する最善の方法があれば、私が望むものです。

var age = 20; 
 
var str = '1 + 2 + 3 + age + "age"'; 
 

 
// the output is 1 + 2 + 3 + 20 + "age"; 
 

 
var obj = { age: 30 }; 
 
str = '1 + 2 + 3 + "age" + obj.age + "obj.age"'; 
 

 
// the output is 1 + 2 + 3 + "age" + 30 + "obj.age";

exmpleは私が欲しいものです。

+1

予想される出力は正確には何ですか?いくつか例がありますか? –

+0

@DanielCheng申し訳ありません、私はちょうど質問を編集し、例を持っています。助けてください! - kelen 27秒前に編集 – kelen

+0

操作だけがありますか? –

答えて

-1

obj.ageまたはageと一致させたい場合は、次の正規表現を検索できます。"

[^"](obj\.age|age)[^"] 

var str1 = '1 + 2 + 3 + age + "age"'; 
 
var str2 = '1 + 2 + 3 + "age" + obj.age + "obj.age"'; 
 
var regex = /[^"](obj\.age|age)[^"]/g; 
 

 
console.log(str1.match(regex)); 
 
console.log(str2.match(regex));

-1

あなたが正規表現

https://regex101.com/r/DTTesL/1

が必要な場合は、前年比はES2015/ES6機能する場合は、このリンクをお試しくださいテンプレートリテラルは、この構文を使用すると呼ばれる:

`String text ${expression}` 

あなたも、このようにそれを行うことができます。

'I want to replace the $age'.replace('$age', age) 
-1
/(?:^|\+)\s*([a-z_][\w.]*)\s*($|\+)/gi 

これは正しいbeginig(^)で、または+記号の後にある任意の変数と一致し、終了前に($)または別ますプラス記号+[a-z_][\w.]*は、文字または_で始まり、数字、文字、_および.を含むことができることを意味します。

例:

var regex = /(?:^|\+)\s*([a-z_][\w.]*)\s*(?:\+|$)/g; 
 

 
var str = '1+name + obj.ko + "lmo" + f98 + "g99"+v'; 
 

 
var matches = []; 
 
var r; 
 
while(r = regex.exec(str)){ 
 
    // should come backwards one step to cover the just-consumed + 
 
    regex.lastIndex--; 
 
    matches.push(r[1]); 
 
} 
 

 
console.log(matches);

+0

downvoter care to explain! –

+0

偽陽性: 'foo +" + bar + "' – melpomene

+0

@melpomeneそれから彼はうんざりしています。それ以来、通常のテキストではないので、正規表現は機能しません。 –

関連する問題