簡體   English   中英

我在這里正確使用模式匹配嗎?

[英]Am I using pattern matching correctly here?

我有以下代碼。 鑒於變量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>

我需要為管道添加一個特殊字符嗎? 符號? 還是在我嘗試只匹配較長字符串的第一部分時不起作用?

都。

  • 您需要使用反斜杠對管道符號進行轉義以匹配文字管道字符。 沒有反斜杠就意味着交替
  • 您還需要刪除行末錨。

試試這個正則表達式:

/^NBSLoan\|Accept/

為什么不先使用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+"\"/>");
}

您還希望刪除$(它表示字符串的結尾)或添加。*以捕獲所有其他字符:

失去終點:

/^NBSLoan\|Accept/

要匹配並捕獲其他字符:

/^NBSLoan\|Accept.*$/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM