2010-04-26 12 views

Antwort

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

\b in einem String-Literal ist ein Backspace Charakter. Wenn eine Regex in einem Stringliteral setzen müssen Sie eine weitere Runde von Entkommen: (. Sie brauchen nicht auch die // in diesem Zusammenhang)

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

+1

Der ‚neue‘ Betreiber zu verwenden ist nicht erforderlich, da pro http://bclary.com/2004/11/07/#a-15.10.3 – James

+15

Es gibt viele Stellen, an denen die Konstruktorfunktion eines eingebauten Typs sowohl mit als auch ohne 'new' verwendet werden kann. Aus Gründen der Übereinstimmung mit anderen Objekten, bei denen dies nicht der Fall ist, und der Klarheit im Allgemeinen, würde ich jedoch immer "neu" verwenden. – bobince

+1

Eine andere Möglichkeit ist die Verwendung von einfachen Anführungszeichen, damit Sie die Backslashes nicht umgehen müssen: 'new RegExp ('\ b' + test + '\ b');' – IQAndreas

5

können Sie

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

aber ich schlage vor,

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