Javascript 在定义的子字符串首次出现后查找字符串的长度

Javascript 在定义的子字符串首次出现后查找字符串的长度,javascript,html,css,Javascript,Html,Css,所以,我有这个html文本区域,我正在尝试实现类似twitter的东西 每次用户键入“#”时,我都要突出显示单词,并在单词末尾显示字母计数。例如,“嗨,我的名字是#user123(7),你叫什么名字?” 我已经处理好了突出显示,但我目前在字母计数部分迷失了方向。 这是我的HTML <div id="inputback" class="format"></div> <textarea id="input" class="format"></textarea

所以,我有这个html文本区域,我正在尝试实现类似twitter的东西

每次用户键入“#”时,我都要突出显示单词,并在单词末尾显示字母计数。例如,“嗨,我的名字是#user123(7),你叫什么名字?” 我已经处理好了突出显示,但我目前在字母计数部分迷失了方向。 这是我的HTML

<div id="inputback" class="format"></div>
<textarea id="input" class="format"></textarea>
以下是我所取得的成就。

提前谢谢你


另外,我不想使用任何插件或Jquery。只需简单的Javascript/html/css

。replace
还可以将函数作为其第二个参数:

str = str.replace(/(^|\s)#(\w+)/g,function(_,a,b) {
    // _ represents the full match - we don't need it here
    // a is the first subpattern
    // b is the second subpattern
    return a+"<b>#"+b+"</b>("+b.length+")";
});
str=str.replace(/(^ |\s)#(\w+)/g,函数(_,a,b){
//_u代表全场比赛-我们这里不需要它
//a是第一个子模式
//b是第二个子模式
返回a+“#”+b+”(“+b.length+”);
});
我调整了一下你的正则表达式。现在,即使散列在字符串的开头,它也会工作,而且我从捕获的组中取出散列,因为a)它是常量,b)您需要第二个捕获组的长度,这使它更容易。


<form id="testForm">
  <input id="A1" type="text"></input>
  <div id="vsA1" class="inputTextSummery">charaters reamining: 40</div>
  </form>
  <script type="text/javascript">
     function wordCount(_input, _limit, _summary)
     {
       var limit = _limit; //set limit of charater
         var inputDiv = "#"+_input;  //inout div id
         var displayDiv = "#"+_summary; //display summary div id
       var currentWordCount = 0;  //defualt current charater count
       $(inputDiv).keyup(function(){   //
             currentWordCount = $(inputDiv).val().length;
             var charLeft = limit - currentWordCount;
             if(charLeft >= 0){
              $(displayDiv).html("charaters reamining: "+ (limit - currentWordCount));
             }else{
              $(displayDiv).html("Input has exceed limit!");     
             }
        });     
     }
     wordCount("A1", 40, "vsA1");
字符数:40 函数字数(_输入,_限制,_摘要) { var limit=\u limit;//设置字符的限制 var-inputDiv=“#”+_-input;//inout-div-id var displayDiv=“#”+_summary;//显示摘要div id var currentWordCount=0;//取消当前字符计数 $(inputDiv).keyup(函数(){// currentWordCount=$(inputDiv).val().length; var charLeft=限制-currentWordCount; 如果(charLeft>=0){ $(displayDiv.html(“字符再加工:”+(limit-currentWordCount)); }否则{ $(displayDiv).html(“输入已超出限制!”); } }); } 字数(“A1”,40,“vsA1”);
使用JavaScript
.indexOf
方法查找表单值中的第一个匹配项。它所做的是在您检查的字符串中找到第一个出现的“#”,并返回它的位置

例如

在你得到排序后,你需要做的就是抓取后面的值。像这样

var string = "This is stackoverflow";
var start = string.indexOf('is') + 2; //7 (You add 2 because its a 2 letter word)
var end = string.length; //20
var newstring = string.substr(start, end);
您可以通过将var字符串替换为
document.getElementById('inputidhere').value,将此信息应用到您的论坛中然后从那里开始


祝你好运!希望这对您有所帮助。

好的“ol
长度”有什么问题?另外:您已经在使用jQuery…嗯。。。这个答案的目的是什么?
<form id="testForm">
  <input id="A1" type="text"></input>
  <div id="vsA1" class="inputTextSummery">charaters reamining: 40</div>
  </form>
  <script type="text/javascript">
     function wordCount(_input, _limit, _summary)
     {
       var limit = _limit; //set limit of charater
         var inputDiv = "#"+_input;  //inout div id
         var displayDiv = "#"+_summary; //display summary div id
       var currentWordCount = 0;  //defualt current charater count
       $(inputDiv).keyup(function(){   //
             currentWordCount = $(inputDiv).val().length;
             var charLeft = limit - currentWordCount;
             if(charLeft >= 0){
              $(displayDiv).html("charaters reamining: "+ (limit - currentWordCount));
             }else{
              $(displayDiv).html("Input has exceed limit!");     
             }
        });     
     }
     wordCount("A1", 40, "vsA1");
var string = "This is stackoverflow";
var start = string.indexOf('is'); //Will return as 5
var string = "This is stackoverflow";
var start = string.indexOf('is') + 2; //7 (You add 2 because its a 2 letter word)
var end = string.length; //20
var newstring = string.substr(start, end);