JavaScript数据类型判断及正则校验
- 数据类型判断
- 判断是否为null
- 判断是否为undefined
- 判断数组
- 判断对象
- 如何改变文本的样式
- 表单校验
- 生成一个适合你的列表
- 数据库
- MYSQL
- navicat与mysql
- [Mysql 8.0.27 免安装配置教程(windows)](https://blog.csdn.net/qq_35731100/article/details/126497980?spm=1001.2101.3001.6650.19&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-19-126497980-blog-123399793.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-19-126497980-blog-123399793.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=20) []
- [Navicat (连接mysql数据库)的基本使用](https://blog.csdn.net/m0_71521555/article/details/126982149)
- Navicat
- NodeJS操作数据库
- NodeJs
- JS访问接口
数据类型判断
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
判断是否为null
- 通过“if (value === null) {…}”方法进行判断;
- 通过“if (!value && typeof value !=“undefined”&&…”方式进行判断。
判断是否为undefined
判断数组
1、通过instanceof判断
instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值。
let a = [];
a instanceof Array; //true
let b = {};
b instanceof Array; //false
在上方代码中,instanceof运算符检测Array.prototype属性是否存在于变量a的原型链上,显然a是一个数组,
拥有Array.prototype属性,所以为true。
存在问题:
需要注意的是,prototype属性是可以修改的,所以并不是最初判断为true就一定永远为真。
其次,当我们的脚本拥有多个全局环境,例如html中拥有多个iframe对象,instanceof的验证结果可能不会符合预期,例如:
//为body创建并添加一个iframe对象
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
//取得iframe对象的构造数组方法
xArray = window.frames[0].Array;
//通过构造函数获取一个实例
var arr = new xArray(1,2,3);
arr instanceof Array;//false
导致这种问题是因为iframe会产生新的全局环境,它也会拥有自己的Array.prototype属性,让不同环境下的属性相同很明显是不安全的做法,所以Array.prototype !== window.frames[0].Array.prototype,想要arr instanceof Array为true,你得保证arr是由原始Array构造函数创建时才可行。
2、通过constructor判断
我们知道,实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判断是否为一个数组。
let a = [1,3,4];
a.constructor === Array;//true
同样,这种判断也会存在多个全局环境的问题,导致的问题与instanceof相同。
//为body创建并添加一个iframe标签
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
//取得iframe对象的构造数组方法
xArray = window.frames[window.frames.length-1].Array;
//通过构造函数获取一个实例
var arr = new xArray(1,2,3);
arr.constructor === Array;//false
3、通过Object.prototype.toString.call()判断
Object.prototype.toString().call()可以获取到对象的不同类型,例如
let a = [1,2,3]
Object.prototype.toString.call(a) === '[object Array]';//true
它强大的地方在于不仅仅可以检验是否为数组,比如是否是一个函数,是否是数字等等
//检验是否是函数
let a = function () {};
Object.prototype.toString.call(a) === '[object Function]';//true
//检验是否是数字
let b = 1;
Object.prototype.toString.call(a) === '[object Number]';//true
甚至对于多全局环境时, Object.prototype.toString().call()也能符合预期处理判断。
4、通过Array.isArray()判断
Array.isArray() 用于确定传递的值是否是一个数组,返回一个布尔值。
let a = [1,2,3]
Array.isArray(a);//true
简单好用,而且对于多全局环境,Array.isArray() 同样能准确判断,但有个问题,Array.isArray() 是在ES5中提出,也就是说在ES5之前可能会存在不支持此方法的情况。怎么解决呢?
5、判断数组方法的最终推荐
当然还是用Array.isArray(),从ES5新增isArray()方法正是为了提供一个稳定可用的数组判断方法,不可能专门为此提出的好东西不用,而对于ES5之前不支持此方法的问题,我们其实可以做好兼容进行自行封装,像这样:
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
//为body创建并添加一个iframe标签
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
//取得iframe对象的构造数组方法
xArray = window.frames[window.frames.length-1].Array;
//通过构造函数获取一个实例
var arr = new xArray(1,2,3);
console.log(Object.prototype.toString.call(arr) === '[object Array]');//true
感谢:本段来自 博客园作者 听风是风 https://www.cnblogs.com/echolun/p/10287616.html
判断对象
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
表单校验
1、input框
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
1.只能输入和粘贴汉字
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"><br/>
2.只能输入和粘贴数字
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" /><br/>
3.数字脚本
<input onkeyup="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}"><br/>
4.只能输入数字和英文
<input onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"><br/>
5.简易禁止输入汉字
<input style="ime-mode:disabled">输入法不转换,但可粘贴上<br/>
6.输入数字和小数点
<input onkeyup="value=value.replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g,'')" /><br/>
7.只能数字和"-",例如在输入时间的时候可以用到
<input onkeyup="value=value.replace(/[^\w&=]|_/ig,'')" onblur="value=value.replace(/[^\w&-]|_/ig,'')" />
8.文本框只能输入数字代码(小数点也不能输入)
<input onkeyup="this.value=this.value.replace(//D/g,'')" onafterpaste="this.value=this.value.replace(//D/g,'')">
2.只能输入数字,能输小数点.
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(//D/.test(this.value)){alert('只能输入数字');this.value='';}">
6.只能输入数字和英文
<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^/d|chun]/g,'')">
7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || //./d/d$/.test(value))event.returnValue=false">8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(/-)*(/d+)/.(/d/d).*$/,'$1$2.$3')">
只能是数字和小数点和加减乘際
1.取消按钮按下时的虚线框,在input里添加属性值 hideFocus 或者 HideFocus=true
<input type="submit" value="提交" hidefocus="true" />
2.只读文本框内容,在input里添加属性值 readonly
<input type="text" readonly />
3.防止退后清空的TEXT文档(可把style内容做做为类引用)
<input type="text" style="behavior:url(#default#savehistory);" />
4.ENTER键可以让光标移到下一个输入框
<input type="text" onkeydown="if(event.keyCode==13)event.keyCode=9" />
5.只能为中文(有闪动)
<input type="text" onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9" />
6.只能为数字(有闪动)
<input type="text" onkeyup="value=value.replace(/[^/d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" />
7.只能为数字(无闪动)
<input type="text" style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9" onkeypress="if ((event.keyCode<48 || event.keyCode>57)) event.returnValue=false" />
8.只能输入英文和数字(有闪动)
<input type="text" onkeyup="value=value.replace(/[/W]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" />
9.屏蔽输入法
<input type="text" name="url" style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9" />
10. 只能输入 数字,小数点,减号(-) 字符(无闪动)
<input onkeypress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false" />
11. 只能输入两位小数,三位小数(有闪动)
<input type="text" maxlength="9" onkeyup="if(value.match(/^/d{3}$/))value=value.replace(value,parseInt(value/10)) ;value=value.replace(//./d*/./g,'.')" onkeypress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 && event.keyCode!=45 || value.match(/^/d{3}$/) || //./d{3}$/.test(value)) {event.returnValue=false}" />
生成一个适合你的列表
- mysql https://blog.csdn.net/qq_51208442/article/details/122543146[登录]
- 2忘记mysql密码网址
(https://blog.csdn.net/qq_51208442/article/details/122543146)
数据库
MYSQL
navicat与mysql
Mysql 8.0.27 免安装配置教程(windows) []
Navicat (连接mysql数据库)的基本使用
Navicat
1、关于Navicat连接MySQL出现2059错误解决方法
NodeJS操作数据库
NodeJs
JS访问接口
基于node书写一个接口 || express(一)
Node操作Mysql增删改查实现
- 关于 **Flowchart流程图** 语法,参考 [这儿][4].
## 导出与导入
### 导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 **文章导出** ,生成一个.md文件或者.html文件进行本地保存。
### 导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
[1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
[2]: https://mermaidjs.github.io/
[3]: https://mermaidjs.github.io/
[4]: http://adrai.github.io/flowchart.js/