美文网首页
JavaScript 正则表达式简介

JavaScript 正则表达式简介

作者: Kevin丶CK | 来源:发表于2019-03-20 11:04 被阅读0次

1.背景

很多场景下,我们需要校验获取到的数据类型, 比如密码,手机号码,邮箱,金额等等;
有些场景下,用户输入一些特殊的字符,我们要需要过滤,或为了显示美观需要格式化等;
这样既可以规范数据,提高性能,又可以过滤一部分存在安全隐患的数据。这个时候,正则就可以很简单快捷的帮助我们做到。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

2.正则表达式

什么是正则表达式呢?
一张图来了解正则式表达式:


(1)^ 为匹配输入字符串的开始位置;
(2)[a-z0-9_-]为只允许包含字符、数字、下划线和连接字符(-);
(3){3,15}为匹配校验的字符串只能为3~15的长度;
(4)$ 为匹配输入字符串的结束位置。
这样就很容易理解正则表达式了,就是以^开始,以$ 结束,中间跟着校验的字符和位数。

下面体验一下:
    let str1 = "123ab";//5位,低于6位,不匹配
    let str2 = "123abc_-";//8位,只包含数字0-9,小写字母a-z,匹配
    let str3 = "123abc_-!";//包含规则外的!字符,不匹配
    let str4 = "123Abc_-!";//包含规则外的A字符,不匹配
    let str4 = "123abc_-231abc";//14位,超过6~12位,不匹配
    let patt1 = /^[a-z0-9-_]{6,12}$/;//只能包含小写字母a-z、0-9、_和-,并且只能6~12位。
    console.log(patt1.test(str1));//false
    console.log(patt1.test(str2));//true
    console.log(patt1.test(str3));//false
    console.log(patt1.test(str4));//false
    console.log(patt1.test(str5));//false

可以自己试试~~~
附录:这里面有平时用到的表达式,建议有空看看
到这里基本可以看懂正则表达式了,
其他的正则的修饰符,方括号内表达式,元字符可以自己查找 JavaScript RegExp 对象参考手册。
下面做个简单的介绍

3.RegExp 对象

什么是 RegExp?
正则表达式描述了字符的模式对象。
当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。
简单的模式可以是一个单独的字符。
更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。
您可以规定字符串中的检索位置,以及要检索的字符类型,等等。

3.1 语法
let patt=new RegExp(pattern,modifiers);
//或更简单的方法
let patt=/pattern/modifiers;

pattern:模式描述了一个表达式模型。
modifiers:修饰符(modifiers)描述了检索是否是全局,区分大小写等。
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

let patt= new RegExp("\\w+");
let patt= /\w+/;
3.2 RegExp 修饰符

修饰符用于执行不区分大小写和全文的搜索。
i - 修饰符是用来执行不区分大小写的匹配。
g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。
m -修饰符是执行多行匹配。

//在字符串中不区分大小写找"runoob"
let str = "Visit RUnoob";
let patt1 = /runoob/i;
console.log(str.match(patt1));
//["RUnoob", index: 6, input: "Visit RUnoob", groups: undefined]
let str2="Is this all there is?";
let patt2=/is/g;
console.log(str2.match(patt2));//["is", "is"]
let patt3=/is/gi;
console.log(str2.match(patt3));["Is", "is", "is"]
3.3 方括号

方括号用于查找某个范围内的字符:


3.4 正向肯定预查

(?!pattern):正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    let regx1 = /^(?![0-9]+$)/;
    let str2 = "0123123";
    let str3 = "0123aaa";
    console.log(regx1.test(str2));//false
    console.log(regx1.test(str3));//true
3.5 元字符

元字符(Metacharacter)是拥有特殊含义的字符:


3.7 量词
3.8 RegExp 对象方法
(1)test()

test()方法搜索字符串指定的值,根据结果并返回真或假。

let patt1=new RegExp("e");
console.log(patt1.test("The best things in life are free"));//true
(2)exec()

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

var patt1=new RegExp("e");
console.log(patt1.exec("The best things in life are free"));
//["e", index: 2, input: "The best things in life are free", groups: undefined]
3.9 支持正则表达式的 String 对象的方法
(1)search()

检索与正则表达式相匹配的值。

(2)match()

找到一个或多个正则表达式的匹配。

(3)replace()

替换与正则表达式匹配的子串。

(4)split()

把字符串分割为字符串数组。

相关文章

  • JavaScript正则表达式

    JavaScript 正则表达式 @(笔记)[正则表达式] 第一章 课程简介 1-1 JS正则表达式简介及应用 课...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

  • JavaScript的正则表达式

    1. 简介 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被...

  • 原生js的基础方法等二

    JavaScript 正则表达式 正则表达式模式 调试 this JSON 字符串转换为 JavaScript 对...

  • day5-正则表达式学习(基于JavaScript)

    JavaScript正则表达式 什么是正则表达式

  • JavaScript 基础

    JavaScript基础 JavaScript简介JavaScript对象 JavaScript简介 为什么使用j...

  • JavaScript 正则表达式简介

    1.背景 很多场景下,我们需要校验获取到的数据类型, 比如密码,手机号码,邮箱,金额等等;有些场景下,用户输入一些...

  • JS 正则表达式

    语法 常用的方法: javascript中如何声明一个正则表达式对象在JavaScript当中,声明一个正则表达式...

  • 正则

    1 JS之正则表达式15个常用的javaScript正则表达式

  • 工具以及网页

    正则表达式:https://regex101.com/#javascript

网友评论

      本文标题:JavaScript 正则表达式简介

      本文链接:https://www.haomeiwen.com/subject/qcnamqtx.html