2

私は次のコードを持っています。変数u1は次のいずれかになります。

NBSLoan|Accept|PPI+No|60Months
NBSLoan|Refer|PPI+No|60Months
DeBSLoan|Accept|PPI+No|60Months

また、最後の部分60Monthsは常に異なりますが、次のJavaScriptを使用してパターンマッチングを行うことはできますか?パイプ|記号に特殊文字を入力する必要がありますか?または、長い文字列の最初の部分のみを一致させようとしているため、これは機能しませんか?

<script type="text/javascript">
var u1 = 'NBSLoan|Accept|PPI+No|60Months';

var n_accept = /^NBSLoan|Accept$/;
var n_refer = /^NBSLoan|Refer$/;
var d_accept = /^DeBSLoan|Accept$/;

if (u1.match(n_accept)) {       
var pvnPixel = '<img src="https://url1.com"/>';
document.write(pvnPixel);
}
else if (u1.match(n_refer)) {       
var pvnPixel2 = '<img src="url2.com"/>';
document.write(pvnPixel2);
}
else if (u1.match(d_accept)) {
var pvnPixel3 = '<img src="url3.com"/>';
document.write(pvnPixel3);  
}
</script>
4

3 に答える 3

5

パイプに特殊文字を入れる必要がありますか?シンボル?または、長い文字列の最初の部分のみを一致させようとしているため、これは機能しませんか?

両方。

  • 文字通りのパイプ文字と一致させるには、パイプ記号をバックスラッシュでエスケープする必要があります。バックスラッシュがない場合、それは交互を意味します。
  • また、行末アンカーを削除する必要があります。

この正規表現を試してください:

/^NBSLoan\|Accept/
于 2012-05-24T10:37:42.750 に答える
0

最初にフィールドを次のように分割してみませんかsplit('|')

function dispatch(u) {
  var parts = u.split('|'),
      key = parts[0] + "_" + parts[1];
      disp_table = {
       'NBSLoan_Accept':'url1.com',
       'NBSLoan_Refer':'url2.com',
       'DeBSLoan_Accept':'url3.com'
      },
      url = disp_table[key];


  url && document.write("<img src=\""+url+"\"/>");
}
于 2012-05-24T10:48:17.370 に答える
0

$(文字列の終わりを意味します)を削除するか、。*を追加して、他のすべての文字をキャプチャします。

終わりを失うには:

/^NBSLoan\|Accept/

他のキャラクターを一致させてキャプチャするには:

/^NBSLoan\|Accept.*$/
于 2012-05-24T10:48:20.370 に答える