js判断字符是否是汉字的两种方法小结

JavaScript013

js判断字符是否是汉字的两种方法小结,第1张

这些资料网上都有的啊

1、用正则表达式判断

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />

<title>js判断字符是否是汉字</title>

<style type="text/css">

.content{

width:350px

overflow:hidden

border:1px solid #ddd

}

</style>

<script language="javascript" type="text/javascript">

function CheckChinese(obj,val){

var reg = new RegExp("[u4E00-u9FFF]+","g")

if(reg.test(val)){

alert("不能输入汉字!")

var strObj = document.getElementById(obj)

strObj.value = ""

strObj.focus()

}

}

</script>

</head>

<body>

<div class="content">

<div>测试字符:<input id="test" type="text" onblur="CheckChinese('test',this.value)" /></div>

</div>

</body>

</html>

2、用 Unicode 字符范围判断

以下方法是用于统计输入字符串的长度,如果是汉字,则字符串长度加2 ;否则字符串长度加1。

代码如下:

function chkstrlen(str)

{

var strlen = 0

for(var i = 0i <str.lengthi++)

{

if(str.charCodeAt(i) >255) //如果是汉字,则字符串长度加2

strlen += 2

else

strlen++

}

return strlen

}

在前端开发中我们经用到的操作有很多,比如判断数据类型、去重、深拷贝等等,最近也在整理常用的知识点,便于积累和后期查看,这里呢我对js中数据类型判断方法以及判断结果进行了汇总。

一、汇总表格

二、4种方式说明

1、typeof

对于原始类型:除了null其它都可以显示正确

对于对象的话:除了function  其它均显示为 “object”

2、 instanceof : 内部机制是通过原型链来判断的  方法是  a instanceof b  (a是不是b的实例)

针对于对象:可以很明显的区分Array、Date、regExp,但是他们都是Object的实例。所以,instanceof 最好是用来判断两个对象是否属于实例关系, 而不是判断一个对象实例具体属于哪种类型。

3、constructor a.constructor===Function / Symbol / String / Number / Boolean / Object / RegExp / Date

对于原始类型:无法处理null、undefined(这两个会报错) 

对于对象:均可以判断

函数的 constructor 是不稳定的,这个主要体现在自定义对象上,当开发者重写 prototype 后,原有的 constructor 引用会丢失,constructor 会默认为 Object

4、 toString

toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

对于 Object 对象,直接调用 toString()  就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

可以判断所有类型: Object.prototype.toString.call(xxx)  对向的话可以直接使用 Object.toString(obj)

三、整理一个可以判断任意数据类型的方法

注意:在es6中用class定义类的时候,通过typeof判断出的结果是Function,而通过Object.toString判断的结果是Object。js中class应该是Function类型,所以这点需要注意。

function getType(para) {  //判断任意数据类型

    const type = typeof para

    if (type === "number" && isNaN(para)) return "NaN"

    if (type !== "object") return type

    return Object.prototype.toString

        .call(para)

        .replace(/[\[\]]/g, "")

        .split(" ")[1]

        .toLowerCase()

}

四、小结

js中数据类型判断的方式有4种:typeof、instance、constructor、toString,typeof简单方便,比较适合原始类型判断,toString繁琐一点但是判断全面,所以这两个的结合判断我是比较推荐的。

可以参考下面的两种方法:

1、直接判断对象不为null

if (!myObj) { 

var myObj = { }

}

Javascript语言是"先解析,后运行",解析时就已经完成了变量声明

2、使用window对象判断某对象是否存在

if (!window.myObj) { 

var myObj = { }

}

扩展资料:

javascript函数

charCodeAt(index)返回一个整数,该整数表现String对象中指定位置处的字符的Unicode编码

concat(string2)衔接两条或少条字符串

fromCharCode(num1, num2, …,BB霜, numN)获取指定的Unicode值并返回字符串

indexOf(searchString, startIndex) 返回字符串中第一个呈现指定字符串的地位

lastlndexOf(searchString, startIndex) 返回字符串中最后一个呈现指定字符串的地位

match(regex) 在字符串中查觅指定值

参考资料来源:百度百科-javascript

参考资料来源:百度百科-JavaScript 函数