2017-04-07 59 views
0

我正在計算給定字符串中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); 

我嘗試使用Unicode相當於一個星號(\ u002A)的,逃逸的星號,使用正則表達式構造函數,並將星號放入數組中,但似乎不匹配。它總是給我把它直接在變量OCC此錯誤:

Uncaught SyntaxError: Unexpected token * 

這也適用於其他所有保留字符在正則表達式(括號,括號,胡蘿蔔等)。

任何幫助將不勝感激。

+0

你將不得不逃避它:'/ \ */g'! '*'前面總是有一些東西,如果不是則它必須是'''需要被轉義的''',否則會引起問題(在你的情況下被認爲是註釋開始)! –

回答

2

您應該用反斜槓(\)將星號標出。

這裏是一個exampel:

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);

相關問題