2010-04-26 21 views

Respuesta

98
var re = new RegExp("/\b"+test+"\b/"); 

\b en una cadena literal es un carácter de retroceso. Al poner una expresión regular en una cadena literal que necesita una ronda más de escape: (. También no necesitan la // en este contexto)

var re = new RegExp("\\b"+test+"\\b"); 

+1

no se necesita el 'nuevo' operador, según http://bclary.com/2004/11/07/#a-15.10.3 – James

+15

Hay muchos lugares donde la función constructora de un tipo incorporado se puede usar con o sin 'nuevo'. Sin embargo, para coherencia con otros objetos donde esto puede no ser cierto, y claridad en general, siempre usaría 'new'. – bobince

+1

Otra forma es usar comillas simples para mayor claridad, por lo que no necesita escapar de las barras diagonales inversas: 'nueva RegExp ('\ b' + test + '\ b');' – IQAndreas

5

puede utilizar

/(^|,)52(,|$)/.test('51,52,53') 

pero sugiero utilizar

var list = '51,52,53'; 
function test2(list, test){ 
    return !((","+list+",").indexOf(","+test+",") === -1) 
} 
alert(test2(list,52)) 
Cuestiones relacionadas