Giter Site home page Giter Site logo

test's Introduction

前端笔记

JavaScript 正则表达式

  • 1 检测数据类型 (#1)
  • 2 正则基础 (#2)
  • 3 正则的组成 (#3)

test's People

Contributors

qijiebing avatar

Watchers

 avatar  avatar

test's Issues

1 检测数据类型

数据类型检测是一个使用比较广的js功能,方法也是老生常谈,目的是为正则抛砖引玉

1 typeof
使用typeof 检测数据类型,首先返回的都是一个字符串,
其次才是字符串包含的对应的数据类型。
例如:‘number,string,boolean’

function fn(callback){
    typeof callback =='function'? callback():null;
//callback && callback();
}

局限性:
1 typeof null = object
2 不能具体细分是数组还是正则, 对象数据类型返回的都是object

2 instanceof

var obj = [1,2];
console.log(obj instanceof Array)   //true

局限性:
* 对于基础数据类型 字段名方式创建结果和实例创建结果是有一定区别的, 严格意义:只有实例创建的结果才是标准数据类型
* 引用数据类型 instanceof true (array Object function)
* console.log(1 instanceof Number) //false 基础数据类型(‘str ’)这样都false
* console.log(new Number(1) instanceof Number) true
* 只要在原型链上的都是true

3 constructor

     * 和 instanceof类似
     * var obj = [];
     * obj.constructor === Array
     * obj.constructor === RegExp
     * constructor 可以处理基础数据类型 instanceof 不可用
     * 局限性
     * 类的原型可以重写 重写可能覆盖constructor 检测结果可能不准确
     * function fn(){}
     * fn.prototype = new Array
     * var f = new fn;
     * f.constructor ==Array
     * null undefined 不能访问constructor

4 Object.prototype.toString.call 最准确的方式

  • toString 方法 简单数据类型 返回对应的string(number boolean str fun array RegExp date, undefined null 俩个没有,{xxx:21} 不一样 Math也不一样 用object proto原型的都是[object xxx])
    • (1).toString() //'1'
    • (123).toString(2、8/16)//对应的进制
    • Object 原型上的tostring方法 让方法执行 并且改变方法中的this关键字指向
    • Object.prototype.tostring 他的作用是返回当前方法的执行主体(方法中的this)所属类的详细信息
    • var obj={name:'zhu'}
  • console.log(obj.toString()); //tostring this 是obj ;
    返回obj所属类的信息 [object Object]
    第一个Object代表的是当前实例是对象数据类型的(固定的)
    第二个Object代表的obj所属类是Object;
Object.prototype.toString.call(null)
"[object Null]"
Object.prototype.toString.call(undefined)
"[object Undefined]"
Object.prototype.toString.call([])
"[object array]"
Object.prototype.toString.call(true)
"[object true]"

所有的数据类型都可以检测

var reg = /^\[object Array\]$/;
reg.test(Object.prototype.toString.call(str))

2 正则基础

正则是一个规则 用来处理字符串的规则

正则总体分为 匹配、捕获 俩种使用方式

1 匹配
匹配 判断字符串是否符合我们制定的规则 reg.text(str)

var reg = /\d/;
reg.test(1);

2 捕获 把符合我们规则的正则内容捕获到 exec:reg.exec(str)

     var reg = /\d/;
        console.log(reg.exec('1')) //["1", index: 0, input: "1", groups: undefined]

如何创建一个正则
1 字面量的方式
var reg = /\d/;
2实例创建
var reg = new RegExp("");
3 如何学习正则
// 用面向对象的方法来学习
console.dir(RegExp.prototype)

3 正则的组成

元字符
每一个正则表达式都是由 元字符修饰符 组成的
[元字符] =》在 / / 中间具有意义的一些字符

1, 具有特殊意义的元字符

  • :转义字符 转译后面字符所代表的含义
    • ^:以某个元字符开始
    • $: 以某个元字符结尾 reg=/^\d$/; reg.test('9') -> true ; reg.test('123') => false 只能一个
    • \n 匹配一个换行符
    • .:除了\n以外的任意字符 var reg = /^0.2$/ 以0开头以2结尾 中间是除了\n以外的任意字符
    • ():分组 var reg = /^(\d+)zhufeng(\d+)$/ 把一个大正则 划分成几个小正则
    • []:
    • x|y : x或者y中的一个
    • [xyz] x或者y或者z中的一个
    • [^xyz] 非的意思 除了这三个外任何一个字符
    • \d 一个0-9之间的数字 \D 除了0-9之外的任何字符
    • \b 一个边界符 "w1 w2 w3" 空格的地方
    • \w: 数字字符下划线中任意字符 [(0-9)(a-z)(A-Z)(_)]
    • \s 匹配一个空白字符一个制表符

** 2 代表出现次数的 量词元字符(6个)**
*: 0-多次出现
+:出现1-多次
?:出现0-1次
{n}:出现n次
{n,}: n到多次
{n,m}:出现n-m次

var reg = /^\d+$/; //一到多个数字
        // 验证手机号码
 var reg = /^1\d{10}$/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.