// 汉字算做两个
var newvalue = value.replace(/[^\x00-\xff]/g, "** ");
var length = newvalue.length;

// 过滤回车
var newText = text.replace(new RegExp(String.fromCharCode(13), 'gm'), "")
    newText = newText.replace(new RegExp(String.fromCharCode(10), 'gm'), "");

var length = newText.length;

// charCodeAt 来计算
var num=0, limit=40;
for (var i=0; i <str.length; i++){
    if(str.charCodeAt(i)> 127||str.charCodeAt(i) <0){
		num+=2;
	}
	else {
		num++;
	}
}

if(num> limit){
	o.value= ' ';
	alert( '输入超出限制 ');
}
else {
	alert( '输入正确 ');
}


创建 RegExp 对象的语法:


new RegExp(pattern, attributes);


参数

  • 参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
  • 参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。
如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出

  • SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。
  • TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

修饰符

修饰符描述i执行对大小写不敏感的匹配。g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m执行多行匹配。


String.fromCharCode()

该函数用于从一些Unicode字符值中返回一个字符串。

该函数属于String对象,所有主流浏览器均支持该函数。

语法


String.fromCharCode( [code1 [, code2 [, codes... ]]] )String.fromCharCode()函数属于 静态函数,而且只能够通过全局String对象进行调用,不能通过String对象的实例进行调用。


参数

参数描述code1可选/Number类型code2可选/Number类型codes可选/Number类型


返回值

String.fromCharCode()方法的返回值为String类型,其返回值为Unicode数值所表示的字符串。

注:如果没有传入任何参数,则返回空字符串""。

示例说明

document.writeln( String.fromCharCode( 65, 66, 67, 68, 69, 70, 71 ) ); // ABCDEFG
document.writeln( String.fromCharCode( 78 ) ); // N
document.writeln( String.fromCharCode( 20013, 22269 ) ); // 中国
document.writeln( String.fromCharCode() ); // (空字符串)