限制JavaScript中以#开头的特定单词的字符数

时间:2017-08-02 09:43:48

标签: javascript jquery regex string match

我有一些问题,我需要为特定字符(10个字符)

“限制”字符

示例在textarea中:

#dog在这里,我需要一个#rest,现在不是#availableeeeeeeee

当我达到10个字符时,需要删除“availableeeeeeeee”这个词

期望的结果

#dog在这里,我需要一个#rest,现在不是#availablee

我的问题是如何限制包含主题标签的每个单词的字符?

由于

3 个答案:

答案 0 :(得分:3)

1。正则表达式解决方案:

您可以将 .replace() 方法与以下正则表达式/(#\w{10})\[\w\d\]+/g一起使用,它会删除多余的字符:

str = str.replace(/(#\w{10})[\w\d]+/g, '$1');

<强>演示:

var str = "The #dog is here, I need a #rest and this is not #availableeeeeeeee for now";

str = str.replace(/(#\w{10})[\w\d]+/g, '$1');

console.log(str);

注意:

此正则表达式使用匹配组匹配以#开头的单词,仅获取前10个字符。

  • 完全匹配#availableeeeeeeee
  • 第1组。不适用#availablee

.replace()调用只保留正则表达式中匹配的组,并跳过额外的字符。

请注意,您需要在textarea的onchange事件处理程序中附加此代码。

2。 split()解决方案:

如果您想使用不使用Regex的解决方案,可以使用.split()方法Array.prototype.map(),如下所示:

str = str.split(" ").map(function(item){ 
  return item.startsWith("#") && item.length > 11 ?  item.substr(0,11) : item;
}).join(" ");

<强>演示:

var str = "The #dog is here, I need a #rest and this is not #availableeeeeeeee for now";

str = str.split(" ").map(function(item){ 
  return item.startsWith("#") && item.length > 11 ?  item.substr(0,11) : item;
}).join(" ");
console.log(str);

答案 1 :(得分:1)

使用javascript的简单解决方案可以将所有单词的文本区域拆分为数组。迭代它并验证字长。

var value = $('#text').val();

 var maxSize = 10;
var words = value.trim().replace(regex, ' ').split(' ');

for(var wlength= 0 ; wlength < words.length; wlength++)
{
    if(words[wlength] > maxSize)
  {
  alert('size exceeds max allowed');
  }
}

您可以尝试不允许通过HTML中的正则表达式内联验证在任意单词的10个字符后键入自己。

答案 2 :(得分:0)

嗯,我想你可以尝试以下方法。

使用https://symfony.com/doc/current/bundles.html方法会将字符串剪切为字词,然后split()字词,如果它forEach a&#39;#&#39;,我们startsWith到10 + 1个字符。最后,substr每个人都获得最终结果:)。

&#13;
&#13;
string="The #dog is here, I need a #rest and this is not #availableeeeeeeee for now"

var result = []
string.split(" ").forEach(function(item){ 
  if (item.startsWith("#")){ 
     result.push(item.substr(0,11));
  } else result.push(item);
});
console.log(result.join(" "));
&#13;
&#13;
&#13;