2017-04-07 3 views
0

Regexp内で通常予約されている文字が特定の文字列に含まれている回数を数えようとしています。たとえば、アスタリスク(*)はRegexpの予約文字です。私はこれを行うことができながら、だから、:Regexp(Javascript)の予約文字の出現回数

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

は、私がこれを行うことはできません。

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

が、私は正規表現を使用して、アスタリスクをエスケープ、アスタリスク(\ u002A)のUnicodeの同等のものを使用してみましたコンストラクタ、およびアスタリスクを配列に入れることはできませんが、一致しないようです。私は、変数OCCで直接それを置くときには、常にこのエラーを与える:

Uncaught SyntaxError: Unexpected token * 

また、これは正規表現内の他のすべての予約文字(角かっこ、かっこ、ニンジン、など)に適用されます。

ご協力いただければ幸いです。

+0

あなたはそれをエスケープする必要があります: '/ \ */G'! '*'には常に何かが先行します。そうでなければエスケープする必要のある文字列 '*'でなければなりません。さもなければ問題を引き起こします(あなたの場合はコメント開始とみなされます)! –

答えて

2

アスタリスクをバックスラッシュ(\)でエスケープする必要があります。ここで

はexampelです:Dekelの答え@

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

1

正規表現を使用して予約文字を検索するための正しい方法です。また、単に予約文字の正規表現と分割を避け、lengthマイナス1を取ることができます:

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

関連する問題