2016-10-24 48 views
0

在我的项目中我有任务给用户输入的字符进行计数并显示计数它工作正常,但我想添加只允许特殊字符的正则表达式如何计算字符串中的特殊字符javascript函数只接受像@#

<!DOCTYPE html> 
<script type="text/javascript"> 
function countChars(countfrom,displayto) 
{ 
    var len = document.getElementById(countfrom).value.length; 
    document.getElementById(displayto).innerHTML = len; 
} 
</script> 


<label>Enter Character</label><br> 
<textarea id="data" cols="40" rows="5" 
onkeyup="countChars('data','charcount');" onkeydown="countChars('data','charcount');" 
onmouseout="countChars('data','charcount');"> 
</textarea><br> 
<span id="charcount">0</span> 
</html> 
+0

你可以使用 – Araz

+0

没有你能解释JavaScript的资产匹配我请 – sms

+0

看到此链接:http://www.w3schools.com/jsref/jsref_match.asp – Araz

回答

1

工作示例:

<label>Enter Character</label><br> 
 
<textarea id="data" cols="40" rows="5" 
 
onkeyup="countChar(this, '@', 'charcount');" onkeydown="countChar(this, '@', 'charcount');" 
 
onmouseout="countChar(this, '@', 'charcount');"> 
 
</textarea><br> 
 
<span id="charcount">0</span> 
 

 

 
<script> 
 
function countChar(container, char, targetId) { 
 
    target = document.getElementById(targetId); 
 
    var regEx = new RegExp(char, 'g'); 
 
    var matches = container.value.match(regEx); 
 
    
 
    if(matches) { 
 
    \t target.innerHTML = matches.length; 
 
    } 
 
} 
 
</script>

1

你可以试试这个,这个匹配所有特殊字符

<!DOCTYPE html> 
 
<script type="text/javascript"> 
 
function countChars() 
 
{ 
 
    var textarea = document.getElementById('data').value; 
 
    var specialCharacters = textarea.match(/[@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/g); 
 

 
    if(specialCharacters == null) return; 
 

 
    document.getElementById('charcount').innerHTML = specialCharacters.length; 
 
} 
 
</script> 
 

 

 
<label>Enter Character</label><br> 
 
<textarea id="data" cols="40" rows="5" 
 
onkeyup="countChars();" onkeydown="countChars();" 
 
onmouseout="countChars();"></textarea> 
 
<span id="charcount">0</span> 
 
</html>

相关问题