2017-12-18 10 views
-2

私は、特殊文字を2回カウントするためにカウンタをテキストエリアに配置したいと考えています。特別なキャラクタを数える2時間と他のキャラクタ1時間

これは私がこれまで行っているコードです:

function count_up(obj) { 
 

 
    var count = obj.value.length; 
 
    document.getElementById('count1').innerHTML = count; 
 
}
<form> 
 
    <div class="form-group"> 
 
    <label>Count Up</label> 
 
    <textarea class="form-control" rows="5" onkeyup="count_up(this);" maxlength="20"></textarea> 
 
    <span class="text-muted pull-right" id="count1">0</span> 
 
    </div> 
 
    <br><br> 
 

 
</form>

+0

質問は何ですか – Phiter

+0

「特殊文字」とは、英数字以外の意味ですか? – Snowmonkey

+0

カウンタは、すべてのキーストロークの後に特殊文字を2回追加し、アルファ数値を1回追加する必要があります。 –

答えて

1

をあなたは非特別の数と特殊文字の数をカウントする必要があります。

このような何か:

function count_up(obj) { 
 

 
    //Matches characters that are not A-Z or 0-9 
 
    var countSpecial = (obj.value.match(/[^a-zA-Z0-9]/g) || []).length * 2; 
 
    //Matches characters that are A-Z or 0-9 (because of the^symbol) 
 
    var count = (obj.value.match(/[a-zA-Z0-9]/g) || []).length; 
 
    document.getElementById('count1').innerHTML = count + countSpecial; 
 
}
<form> 
 
    <div class="form-group"> 
 
    <label>Count Up</label> 
 
    <textarea class="form-control" rows="5" onkeyup="count_up(this);" maxlength="20"></textarea> 
 
    <span class="text-muted pull-right" id="count1">0</span> 
 
    </div> 
 
    <br><br> 
 

 
</form>

+0

これは私の正規表現の知識が本当の低いのであるかどうかわからない – Phiter

+0

それは私のために働く! –

0

それとも、あなたは、単に英数字をカウントし、合計からそれを引くことができ - その本当に簡単に、あなたが実際の文字列を必要とすることを定めたことがありませんカウント。

document.querySelector("#count-this").addEventListener("keyup", count_up); 
 

 
function count_up(evt) { 
 
    var obj = evt.target; 
 
    var text = obj.value; 
 
    var alphaNumeric = text.replace(/[\W_]+/gmi, ""); 
 
    var specialCount = text.length - alphaNumeric.length; 
 
    var count = alphaNumeric.length; 
 
    // console.log(text + ", " + alphaNumeric); 
 
    document.querySelector('.alphanumeric-count .counter').innerHTML = count; 
 
    document.querySelector('.non-alphanumeric-count .counter').innerHTML = specialCount; 
 
}
<form> 
 
    <div class="form-group"> 
 
    <label>Count Up</label> 
 
    <textarea class="form-control" rows="5" id="count-this" maxlength="20"></textarea> 
 
    </div> 
 
    <div class="results"> 
 
    <div class="alphanumeric-count"> 
 
     Alphanumeric: <span class="text-muted pull-right counter" >0</span> 
 
    </div> 
 
    <div class="non-alphanumeric-count"> 
 
     Special: <span class="text-muted pull-right counter" >0</span> 
 
    </div> 
 

 
    </div> 
 
</form>

またはお好みであれば、ここではas a fiddleです。

関連する問題