方法1
代码
v-model="groupName"
class="edit-input"
ref="groupName"
@change="changeValue($event,5)"
@keyup="changeValue($event,5)"
>
js
data() {
return {
groupName: '',
};
},
methods: {
/*限制5个字符 一个中文三个字符 一个英文一个字符 符号也分中英文*/
changeValue(e,limit) {
let val = e.target.value
if (this.validateTextLength(val) > limit) {
while (this.validateTextLength(val = val.substr(0, val.length - 1)) > limit) ;//分号不能省
this.groupName = val
}
},
validateTextLength(value) {
value = String(value)
let length = value.length
let reg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/g //匹配中文和中文字符
let hanzi = (value.match(reg) || "").length
let num = length - hanzi
let fstr = hanzi * 3 + num //中文三个字符
return fstr
},
},
方法2
[\x00-\xff] 表示 0 - 255的 ASCII 码值, 是单字节的。 前面取非(^) 就表示大于255的ASCII码值了, 是双字节了, 可以用来匹配汉字
search() {
if(this.messageInput.replace(/[^\x00-\xff]/g,"xxx").length > 10){//可以用xxx来设置一个汉字占几个字符,比如写两个xx,就表示一个汉字占两个字符
console.log('请不要超过10个字符');
return false;
}
},