2017-07-21 16 views
-1

これはhtml5バナー用の単純なコードです。特定の広告配信プラットフォーム用ですが、クロムで実行するとエラーが発生します。javascriptの正規表現機能で構文エラーが発生する

エラーは次のとおりです。 index.html:5 Uncaught SyntaxError: Invalid regular expression: missing /

私は正確に正規表現のこの種のコードを読んで達人ではありませんよ。誰が問題が何であるか把握できますか?

function getParameterByName(name){ 
    name=name.replace(/[\/, "\\[").replace(/[\]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + '=([^&#]*)"),results = regex.exec(location.search); return results === null ? "":decodeURIComponent(results[1].replace(/\+/g, " ")); 
    } 
    var clickTAG = getParameterByName("clickTAG"); 

私はエラーをスローしないコードの非常によく似た作品が見つかりました:

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results === null ? "" : 
     decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

違いは、この行に name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");ある - 何

を働いていない - name = name.replace(/[\/, "\\[").replace(/[\]/, "\\]");作業します差? []の意味は何ですか?また、]を追加するとどうなりますか?

+2

私はあなたの文字列に '' 'と' ''を混ぜたと思います。 –

+1

これは機能していないものを置き換えるものではなく、新しいRegExp()です。文字列はボット ""またはその両方でなければならず、別のものを使うことはできません –

+0

'\'はエスケープ文字です。たとえば、文字列 '"は引用符です:\ "" 'は出力します'ここに引用符があります: '' - '\'はその文字列の一部として扱われるように直後の文字に指示します。最初の例 – Santi

答えて

2

あなたの最初のコード行に問題があり、その中には/がありません.2行目には正しい文字列が含まれていません。このコードを試してみてください作品

function getParameterByName(name){ 
    name=name.replace(/[\/]/, "\\[").replace(/\[\]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + '=([^&#]*)'),results = regex.exec(location.search); return results === null ? "":decodeURIComponent(results[1].replace(/\+/g, " ")); 
    } 
    var clickTAG = getParameterByName("clickTAG"); 
1

EDIT:「あなたの正規表現のコンストラクタで

new RegExp("[\\?&]" + name + '=([^&#]*)"), 

で「置き換え----------------------------- ------------- ^矢印の上のこの文字は "

「=([^ &#] *)" この要素は、どちらも "" ではありません ''。

する必要があります

投稿したコードから:

new RegExp("[\\?&]" + name + '=([^&#]*)") // your code 
new RegExp("[\\?&]" + name + "=([^&#]*)") // working code 

違いを見つけるのは本当に簡単です

関連する問題