dpts, прости, что не вникал.
На самом деле ты наступил на знатные грабли совсем в другой стороне:
/^\+\d{11}$/g
->
/^\+\d{11}$/
Если регулярка с глобальным модификатором, то она запоминает позицию предыдущего вхождения. А test, как и exec учитывает это.)
<script>
var pattern = /a/g;
document.write( pattern.lastIndex, ' ' , pattern.test('a a a '), '<br>');
document.write( pattern.lastIndex, ' ' , pattern.test('a a a '), '<br>');
document.write( pattern.lastIndex, ' ' , pattern.test('a a a '), '<br>');
document.write( pattern.lastIndex, ' ' , pattern.test('a a a '), '<br>');
document.write( pattern.lastIndex, ' ' , pattern.test('a a a '), '<br>...');
document.close();
</script>
P.S. А правильно форматировать свойства в vue имеет смысл через сеттеры, условно так:
computed:{
v: {
get: function(){
return this.innerV;
},
set: function(v){
this.innerV = v.length > this.max ? v.substr(0,this.max) : v;
}
}
}