我有一些问题,我需要为特定字符(10个字符)
“限制”字符示例在textarea中:
#dog在这里,我需要一个#rest,现在不是#availableeeeeeeee
当我达到10个字符时,需要删除“availableeeeeeeee”这个词
期望的结果
#dog在这里,我需要一个#rest,现在不是#availablee
我的问题是如何限制包含主题标签的每个单词的字符?
由于
答案 0 :(得分:3)
您可以将 .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
#availablee
.replace()
调用只保留正则表达式中匹配的组,并跳过额外的字符。
请注意,您需要在textarea的onchange
事件处理程序中附加此代码。
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)
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每个人都获得最终结果:)。
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;