2017-03-23 3 views
0

私は解決できない問題があります。私はまた、テキストのいくつかの部分を意味し、にtextInputの値を保持する変数を持ってJavaScriptでregExpオブジェクトに変数を渡して動作させる方法

var pattern = this.state.regExpVal; 

、例えば、郵便番号:それはユーザによって提供される、のは、私は正規表現パターンを保持変数があるとしましょう。

するvar strの= this.state.textAreaVal。

は、私は新しい正規表現オブジェクトを作成:

var myRegEx = new RegExp(pattern, 'g'); 

を、結果はOKではありません。(それはフラグの検索がグローバルに動作していないようだと、私はその理由を把握することはできません)。

var result = str.match(myRegEx); 

誰でも手助けできますか?

+3

何が問題ですか? –

+0

文字列とは何ですか?しようとしている正規表現は何ですか? –

+0

文字列と正規表現の両方がユーザーによって提供されます。 var str = '34 -990'とregExp = \ d {2} - \ d {3}のパターンを考えてみましょう。 – LostInJavaScript

答えて

1
let reg = new RegExp("super", 'g'); 
"SOsuperISsuper!".match(reg); 

結果は、期待通りに2つの要素["super"、 "super"]を持つ配列です。

私はこの問題は、あなたのthis一部undefinedまたはnull値内またはケース意味であると思います(試すなどが 'I')

編集:

let myObject = { 
    state: { 
    regExpVal: "super" 
    } 
} 
let reg = new RegExp(myObject.state.regExpVal, 'g'); 
"SOsuperISsuper!".match(reg); 

編集2:

let myObject = { 
    state: { 
    regExpVal: "super" 
     } 
    }; 
let pattern = myObject.state.regExpVal; 
let reg = new RegExp(pattern, 'g'); 
"SOsuperISsuper!".match(reg); 
+0

ありがとうございますが、パターンに変数を入れるオプションがあるかどうかを知りたいと思います。 var pattern = this.state.regExpVal; var str = this.state.textAreaVal; var reg = new RegExp(pattern、 'g'); -----ここでstr.match(reg)を実行しようとしてもうまくいきません。 patternとstrの両方が文字列です。 – LostInJavaScript

+0

ええ、私は私の答えを更新しました。 –

+0

私はすべての組み合わせを試しているので、問題はどこかにあると思うかもしれません。サポートしてくれてありがとう。 – LostInJavaScript

0

私はいくつか具体的な例を提供することがあなたにとって有益だろうと思います。そのようなことがなければ可能であるのと同様に手助けすることは困難です。しかし、私はどのように変数から正規表現を構成するのかの例を提供することができます。

のは、あなたが「オンザフライ」の正規表現パターンマッチング

const someVar = 'LostInJavaScript'; 
Regular Expressionコンストラクタの

使用、あなたが使用しているように見えるように、必要である構築したいから、あなたの変数を想定してみましょうここで取るアプローチ。

const regPattern = new RegExp(`${someVar}`, 'g'); 
// => /LostInJavaScript/g 

はそれを渡す関連/適切なString方法(例えばString#matchString#searchRegExp#testRegExp#exec)を適用します:コンストラクタの内部では、私はそれを渡された最初の引数にES2015スタイルの文字列テンプレートを使用して好む傾向がありますこの動的に作成された正規表現。

const strInput = 'RegularExpressionsHaveMeLostInJavaScript...', 
     matchedSubStr = strInput.match(regPattern); 
// => ["LostInJavaScript"] 
関連する問題