我想通过短信网关发送文本,并且在from字段中限制为11个字符。和æ或ø或å算作两个字符。 我使用jquery验证器来计算,并显示用户消息,我如何获得maxlength,每次减去2,用户输入æ或ø或å,只有减去一个字符,当它来自a-z ??
现在脚本,允许a-z和æøå,0-9和空格,但它不计算æøå作为两个字符。我该怎么做?
jQuery.validator.addMethod("accept", function(value, element, param) {
return value.match(new RegExp("^" + param + "$"));
});
from: {
required: false,
accept: "[a-zA-Z0-9æøåÆØÅ ]+",
minlength: 2,
maxlength: 11
},
答案 0 :(得分:2)
尝试这样的事情:
function countChar(mystring){
var count=0;
for (var i=0;i<mystring.length;i++)
{
if (mystring[i].match(/[æøåÆØÅ]/))
count += 2;
else
count++;
}
return count;
}
答案 1 :(得分:1)
您可以使用正则表达式执行此操作:
var str = "A string with some strange characters like: æ ø å Æ Ø Å";
var total = str.length + (str.match(/æ|ø|Æ|Ø|Å/g)||[]).length;
str.length = 55
的total = 60
强>
答案 2 :(得分:1)
您需要先对其进行编码。
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}
function decode_utf8(s) {
return decodeURIComponent(escape(s));
}
您可以查看http://jsfiddle.net/vLmQ8/以查看其实际效果。
有关详细信息,请参阅http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html。