2017-10-24 4 views
0

Javascriptを使用してLaravelアプリケーションで正規表現を使用するのに問題があります。ミドルウェアとjavascriptの正規表現との競合はありますか?

ここにコードスニペットがあります。私は提出された年と一致するレコードを引っ張ってデータをフィルタリングしようとしています。私は、特定の資産のための毎日の終値を使用してのみで日付欄にYYYY年から始まるデータプルにしたいんだ「YYYY-MM-DD HHを:MM:SS」形式:

d.forEach(function(data){ 
    dateCompare = new RegExp(year + "-" + /\d\d/ + "-" + /\d\d/ + " " + /\d\d/ + ":" + /\d\d/ + ":" + /\d\d/); 

    console.log(data.date.match(dateCompare)); 

    if(d.date.match(year + "-" + /\d\d/ + "-" + /\d\d/ + " " + /\d\d/ + ":" + /\d\d/ + ":" + /\d\d/)){ 
     console.log("Match"); 
    } 
    else{ 
     console.log("No match"); 
    } 
}); 

を私は、文字列が一緒に比較するために、取得することができます

date, close 
YYYY-MM-DD HH:MM:SS, 123.45  //year-month-day hour:minute:seconds 

が、それは正規表現を認識していないようです:csv形式は、再び、のような見えます。 Console.logは、比較されている両方の文字列を出力し、両方を出力します。一方はリテラル正規表現文字列、他方は単純な日付書式文字列です。

現在のところ、console.log以外の結果を出すように設定する必要はありません。私はif(... === true)if(...)などを含むif文の複数の書式を試してきましたが、正規表現に合わせるべき日付書式にもかかわらず "No match"という印字しか印刷されません。私はまた正規表現を文字列として保存し、Regexオブジェクトと直接比較してみました。まだ成功していない。

私はすべて同じことを言っていて、それを暗黙的に明示的に実装しようとしていて、結果は同じでした。 Regexに何か問題がありますか?

アプリケーションはLaravelの上に構築されていますが、スクリプトファイルに他のスクリプトを実行する際に問題はありません。

編集:コードスニペットは省略可能な関数パラメータyearの宣言を省略し、パラメータがない場合はデフォルトで2010になります。私の唯一の問題は文字列を一致させることで、私のWebアプリケーションは.date属性のRegex文字列をdataと比較できないようです。それとも私の実装が間違っているかもしれません。私はもう少し微妙なことをして、それを働かせることができるかどうかを見ます。

また、私はd3.jsライブラリを使用していることを忘れています。

d.csvファイルの読み取りからの生データの出力を含む変数であり、datafunction(data)のローカルスコープに渡される変数です。

+0

[正規表現を使用して動的文字列に一致](https://stackoverflow.com/questions/2145073/match-dynamic-string-using-regex)と多分この[MDN String.prototype.match](https ://developer.mozilla。 – ljubadr

答えて

0

ミドルウェアとjavascriptの正規表現は矛盾しますか? data.dateから来たの

ませ

ありませんか? 私はあなたがこの作品PHP http://php.net/manual/en/function.preg-match.php

+0

私は 'data'を渡しています。これは' .csv'ファイルの読み込みの出力であり、正しい値を関数に渡します。 。関数はオブジェクト全体を反復処理し、それぞれの 'data'属性' .date'を、y + m-d h:m:s形式の年+任意の文字列と一致する正規表現文字列と比較します。関数に渡すオブジェクトを取得できますが、文字列を比較すると問題が発生します。常に 'console.log'は 'No Match'です。 – cchoe1

+0

バックエンドの文字列を比較し、AJAXを使用してチャートを非同期に更新できるとします。最終的な目標は、一見、たくさんの異なるチャートオプションを持つことになるので、ページを更新せずにチャートを更新することです。私はそれを素早くシームレスに操作したいと考えています。 JS正規表現を文字列比較に使用できない場合は、それを変更しなければならないかもしれませんが、私の上の他の人は、JS正規表現の構文がGoogle検索で見たものそれを試して報告しなければならないかもしれない。 – cchoe1

0
d.forEach(function(data){ 
    dateCompare = new RegExp(year + "-" + '\\d\\d' + "-" + '\\d\\d' + " " + '\\d\\d' + ":" + '\\d\\d' + ":" + '\\d\\d'); 

    if(data.date.match(dateCompare)){ 
     console.log("Match!!!!!!"); 
     array.push(data) 
    } 
    else{ 
     console.log("No match"); 
    } 

}); 

にそれらを比較しようとすることができると思います。リンクiljubadrありがとう。

関連する問題