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 回答