beatovich: quotemeta für javascript???

hallo

Ich suche mit einer RegExp

	if(search){
		var regex = RegExp(search,'g');
		while ((res = regex.exec(v)) !== null) {
			result.push([res[0],regex.lastIndex-res[0].length,regex.lastIndex]);
		}
	}

Nun möchte ich dem Anwender die Möglichkeit geben, dass seine Eingabe nicht als RexExp String interpretiert wird.

Gibt es etwas zu Perls quotemeta analoges für Javascript, oder eine Behandlung von search so dass alle RegExp relevanten Zeichen maskiert werden?

danke für Tipps

  1. Hallo beatovich,

    Gibt es etwas zu Perls quotemeta analoges für Javascript, oder eine Behandlung von search so dass alle RegExp relevanten Zeichen maskiert werden?

    Nichts eingebautes, nein. Aber das kannst du recht einfach selber bauen:

    function regexEscape(text) {
      return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
    }
    

    kommt direkt aus meiner utils.js 😉

    LG,
    CK

    1. hallo

      Hallo beatovich,

      Gibt es etwas zu Perls quotemeta analoges für Javascript, oder eine Behandlung von search so dass alle RegExp relevanten Zeichen maskiert werden?

      Nichts eingebautes, nein. Aber das kannst du recht einfach selber bauen:

      function regexEscape(text) {
        return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
      }
      

      habe derzeit im Code (auch irgendwo aufgeschnappt)

      search.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      

      Ich weiss nicht, inwiefern da [,] magisch, ist ausser in {m,n}

      kommt direkt aus meiner utils.js 😉