2012-05-24 3 views
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> 

ответ

5

Нужно ли мне поместить в специальный символ для трубы | символ? Или это не сработает, поскольку я пытаюсь совместить только первую часть более длинной строки?

Оба.

  • Вам необходимо избежать символа трубы с обратной косой чертой, чтобы соответствовать буквальному символу трубы. Без обратной косой черты это означает alternation.
  • Вам также необходимо удалить конец линии.

Попробуйте это регулярное выражение:

/^NBSLoan\|Accept/ 
+0

Спасибо, хочу дать этому попытку - синтаксически выглядит, как это работает. – zik

+0

Я просто сопоставил строку, используя 'match (/^NBSLoan \ | Accept /)' вместо использования переменной. Но это сработало. Благодаря! – zik

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+"\"/>"); 
} 
0

Вы хотите также удалить $ (это означает конец строки) или добавить a. * для захвата всех других символов:

Чтобы проиграть конец:

/^NBSLoan\|Accept/ 

Для согласования и захватить другие символы:

/^NBSLoan\|Accept.*$/