我有以下代码。鉴于变量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>
答案 0 :(得分:5)
我是否需要为管道添加特殊字符符号?或者这不起作用,因为我只想匹配较长字符串的第一部分?
两个
试试这个正则表达式:
/^NBSLoan\|Accept/
答案 1 :(得分: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+"\"/>");
}
答案 2 :(得分:0)
您还要删除$(表示字符串结尾)或添加。*以捕获所有其他字符:
失去结局:
/^NBSLoan\|Accept/
匹配并捕捉其他角色:
/^NBSLoan\|Accept.*$/