как посчитать специальный символ в строковой функции javascript, которая принимает только подобные @ #

#javascript

#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>
  

Комментарии:

1. вы можете использовать свойство match javascript

2. нет, не могли бы вы объяснить мне, пожалуйста

3. смотрите эту ссылку: w3schools.com/jsref/jsref_match.asp

4. но я хочу вернуть count

5. var res = str.match(/@/g). длина;

Ответ №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) {
  	target.innerHTML = matches.length;
  }
}  
</script>  

Ответ №2:

вы можете попробовать этот, он соответствует всем специальным символам

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