2017-04-07 2 views
0

Ich versuche, das Auftreten von normalerweise reservierten Zeichen in Regexp in einer bestimmten Zeichenfolge zählen. So ist zum Beispiel der Stern (*) ein reserviertes Zeichen in Regexp. So, während ich dies tun können:Zählen Vorkommen von reservierten Zeichen in Regexp (Javascript)

var textareaId = document.getElementById("textareaId").value; 
var occ = (textareaId.match(/i/g) || []).length; 
alert(occ); 

Ich kann das nicht tun:

var textareaId = document.getElementById("textareaId").value; 
var occ = (textareaId.match(/*/g) || []).length; 
alert(occ); 

Ich versuchte, die Unicode-Äquivalent von einem Stern mit (\ u002A), das Sternchen zu entkommen, eine Regexp mit Konstruktor, und setzen Sie das Sternchen in ein Array, aber es scheint nicht zu stimmen. Es gibt immer diesen Fehler, wenn ich es direkt in der Variablen occ:

Uncaught SyntaxError: Unexpected token * 

Dies gilt auch für alle anderen reservierten Zeichen in regexp (Klammern, Klammern, Karotten, etc.).

Jede Hilfe würde sehr geschätzt werden.

+0

Sie werden es zu entkommen: '/ \ */g'! Dem '*' wird immer etwas vorangestellt, wenn nicht, dann muss es ein ''' 'sein, das maskiert werden muss, sonst wird es zu Problemen kommen (in deinem Fall wird es als Kommentar interpretiert)! –

Antwort

2

Sie sollten das Sternchen mit einem Backslash (\) entkommen lassen. Hier

ist ein exampel:

str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*' 
 
var occ = (str.match(/\*/g) || []).length; 
 
console.log(occ);

1

@ Dekel Antwort ist der richtige Weg für ein reserviertes Zeichen suchen regex. Sie können auch nur vermeiden, regex und Split auf dem reservierten Zeichen und nehmen die length minus 1:

var str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*' 
 
var count = str.split('*').length - 1; 
 
console.log(count);

Verwandte Themen