广告
返回顶部
首页 > 资讯 > 精选 >JS正则表达式的使用方法是什么
  • 659
分享到

JS正则表达式的使用方法是什么

2023-07-06 04:07:05 659人浏览 泡泡鱼
摘要

本篇内容主要讲解“js正则表达式的使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS正则表达式的使用方法是什么”吧!测试字符串是否合规这种特性常被用来检测前端输入的字段是否符合要求

本篇内容主要讲解“js正则表达式的使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS正则表达式的使用方法是什么”吧!

测试字符串是否合规

这种特性常被用来检测前端输入的字段是否符合要求,常见的场景是注册时输入账号、密码、邮箱等测试

JS正则表达式的使用方法是什么

var  regexp_1 = /a/;var  regexp_2 = new Regexp("a");

上面,我给了两种写法,这两种写法,常用的是第一种第一种与第二种完全等效,都是创建一个正则表达式(以后看见代码里字符串有俩斜线包裹,别再怀疑了,就是正则!)。

没错,这就是正则表达式的创建方法,是不是灰常简单,没有那么高大上吧。上面创建的正则表达式,表达的含义是匹配字符‘a’,且没有特殊的匹配规则

别看上面只有这么简单的一个表达式,其实它已经可以被我们去使用了,我们看下面这个例子:

<script>   function demo() {        var regexp_1 = /a/;        var str = 'abc'        alert(regexp_1.test(str))    }   demo()</script>

这上面的就是一个小例子,当然了大家不用管里面的test函数,因为我们还没讲到,不过大家先记住:

test函数是正则表达式最基础的一个函数,作用是对传入的字符串进行固定格式、内容的匹配。(后面部分会再点到这个函数)

这里我们了解一下我们写的正则表达式是可以被使用的,因为上面的代码就涉及了一个简单的正则表达式的使用

常见的正则表达式属性

三种匹配规则

首先介绍一下正则表达式的三种匹配规则

匹配规则符号规则含义
i匹配时忽略大小写
g执行全局匹配(会匹配整个语句,而非匹配到第一个目标后终止)
m执行多行匹配

它们的语法是这样的:

var  regexp_1 = /a/i;var  regexp_2 = /a/g;var  regexp_3 = /a/m;var  regexp_4 = new Regexp("a","i"); var  regexp_5 = new Regexp("a","g"); var  regexp_6 = new Regexp("a","m"); var  regexp_7 = new Regexp("a","igm"); var  regexp_8 = /a/igm;

上面展示了两种正则表达式定义方法下的匹配规则的语法:

对于第一种正则表达式,我们直接在斜线后加上匹配规则对应的符号即可;

对于第二种正则表达式,我们在括号里传入第二个参数即可,参数仍然是对应的符号;

补充:其实不传入参数、斜线后面不写任何东西,代表了默认情况,也就是普通的正则匹配

最后要说明的是,可以有多种规则同时执行,例如可以同时忽略大小写、全局匹配(需要几个就加几个参数符号)

我们拿忽略大小写做一个小demo:

<script>    function demo() {        var regexp_1 = /a/;        var regexp_2 = /a/i;        var str = 'Abc'        alert(regexp_1.test(str))        alert(regexp_2.test(str))    }    demo()</script>

其中,第一个弹窗是False,第二个是True,大家也可以点这里试验一下:【点我揭晓】

五种常见属性

接下来,我们讲解一下五种常见的正则表达式的属性:

啥,你问我啥叫正则表达式的五种属性?就是 /a/ 的五种属性,这句话就是这么理解的,也就是这个表达式会有五种属性,它们分别是:

属性说明
ignoreCase返回一个布尔值True代表正则表达式设置了 i 匹配规则(忽略大小写)False代表未设置。
global返回一个布尔值True代表正则表达式设置了 g 匹配规则(全局匹配)False代表未设置。
multiline返回一个布尔值True代表正则表达式设置了 m 匹配规则(多行匹配)False代表未设置。
lastIndex返回一个int值,表示下一次搜索开始的索引位置只在设置了 g 匹配规则时才有实用意义
source返回一个字符串字符串正则表达式的字符串形式(不含斜线)

除了lastIndex其他四个大家应该都能从字面理解,关于lastIndex,我会在下一个部分单独介绍它。

规则g的使用详解

最后,由于规则g:全局匹配,不容易理解,我们单独拿出来讲一讲,而且讲g的同时,顺便把上面提到的lastIndex也一起讲了:

我们先看这样一个字符串:

str = 's_s_s_s_s_s_s_s'

假如目标是匹配s,那么使用普通的正则表达式,例如:

regexp = '/s/'

我们确实匹配了,但是只匹配了第一个s,换句话说没有把所有的s匹配到,那么如果我们想要把整个句子里的s都匹配一下,这时 g 就发挥作用了

我们现在有需求:匹配每一个s,并依次输出s的索引,此时我们的第一步是定义一个g模式的正则表达式

var regexp = '/x/g'

那么索引要怎么办呢?哎这时候就用到了lastIndex,还记得吗,它代表了下一次正则表达式匹配的起始索引:

<script>    function demo() {        var regexp = /s/g        var str = 's_s_s_s_s_s_s_s'        regexp.test(str)        alert(regexp.lastIndex)        regexp.test(str)        alert(regexp.lastIndex)        regexp.test(str)        alert(regexp.lastIndex)        regexp.test(str)        alert(regexp.lastIndex)        regexp.test(str)        alert(regexp.lastIndex)        }    demo()</script>

此时,我们就实现了索引的获取(注意,这里弹出的并不是索引,是索引加一,减去一就是真正的索引)

常见的正则表达式方法举例介绍

test方法

首先当然是我们最常用的test()方法了,它有以下功能:

test() 方法是正则表达式最常用一个方法,用于检测一个字符串是否匹配某个模式.

test ()方法检查字符串是否与给出的正则表达式模式相匹配,如果是则返回 true,否则就返回 false,这一点在刚才上面的小案例里,大家都有体会。

同时搭配g模式,test方法也可以进行全文的检查,上面的demo也有提到,这里不过多赘述。它的标准语法格式是这样的

var regexp = /xxx/var str = 'xxx'var boolean_value = regexp.test(regexp)

正则子表达式匹配

在讲exec()方法之前,我们插播一个知识点:子表达式匹配。

什么意思呢?我们观察一下之前写的正则表达式,都是一整个式子进行匹配,那么有没有可以在一个式子里有一些子式子的写法呢?大家可能到这儿没有太理解子表达式的意思,那我举个例子:

现在有这样一个式子:

str = 'st_s_s_s_s_s_s_s'

我想要先匹配 st_ 这个字符串,那么正则表达式大家都会写

var regexp = /st_/

那如果我接下来想要,先匹配一下st_,匹配到之后再匹配一下里面的 t 和 _ ,也就是我想要一次把st_  、t 和 _ 都匹配出来,要怎么办呢?这样写就可以了:

var regexp = /s(t)(_)/

于是我们知道了,括号的内容代表子表达式,而且在第一次匹配时,它会默认把所有的括号去掉,做一个整体匹配,例如上面的例子,第一波匹配时,表达式相当于是: /st_/ 。

只有整体匹配成功,后面的子字符串匹配才会被执行匹配,否则如果整体没有匹配到,即使子字符串能匹配到内容,也都会被返回空值。(这句话先不用理解,下面的exec()方法会再讲)

exec方法

exec()方法,比普通的test()方法更加复杂,同时能做的事情也更复杂:

exec() 方法用于检索字符串中的正则表达式的匹配。

exec()方法返回的是一个字符串的数组

整句匹配失败时,会返回一个null的空数组

否则,有:数组的第0个元素存储的是整句匹配到的字符串第1个元素存放的是第一个引用型分组(子表达式)匹配的字符串第2个元素存放的是第二个引用型分组(子表达式)匹配的字符串,依次类推。

看到这里,我要开始填坑了:刚才提到了如果整句匹配失败,那么即使子字符串能够成功匹配,也会被返回空值,是什么意思呢?我们举一个例子,看下面的代码

<script>    function demo() {        var regexp = /s(t_)(_)/        var str = 'st_s_s_s_s_s_s_s'        var list = regexp.exec(str)        document.write(list[0])        document.write('<br>')        document.write(list[1])        document.write('<br>')        document.write(list[2])    }    demo()</script>

这段代码大家现在肯定能看懂,那么有奖竞猜:上面代码执行之后,页面上会被写什么内容?

我们解析一下:

首先,由于包含子字符串,我们第一次先整句匹配,把括号取消,那么正则表达式变成:

regexp = /st__/(注意,这里是有两个下划线的)

于是真相很明显了:st__不存在,所以整句匹配失败了,于是即便子字符串s_和_能够被匹配到,一样不会有结果,到这里我算是把这块给大家讲清楚了?

那么大家应该对exec()方法有一定了解了,那我最后举一个成功实现多匹配的例子:

<script>    function demo() {        var regexp = /s(t)(_)/        var str = 'st_s_s_s_s_s_s_s'        var list = regexp.exec(str)        document.write(list[0])        document.write('<br>')        document.write(list[1])        document.write('<br>')        document.write(list[2])    }    demo()</script>

这里有人就很"贪心了",可能会问list[3]是啥呀

list[3]是undefined,因为exec()方法只会执行一次匹配,因此它在三个表达式(总式、两个子表达式)匹配之后就会停止,因此一共只有三个值。

字符串的常见函数

最后是字符串的常见函数,注意,各位别弄混了,这是字符串的常见函数,调用函数的对象是字符串,不是正则表达式,但是传参可以是正则表达式

var str = 'xxx'// 1. search(): 检索字符串中与指定的子字符串或正则表达式相匹配的子字符串。// 返回找到的第一个字符的位置,如果未找到返回-1// 该方法将忽略"g"标志和正则对象的lastIndex属性(即总是从开头找起)var index = str.search(Regexp/String);// 2. match(): 在字符串内查找一个或多个与正则表达式匹配的字符串,返回一个对象// 若没开启"g"标志,将只查找第一个匹配的字符串,返回一个对象// 该对象包含下标0、index、input,其中下标0等价于index,input是String的引用// 开启"g",返回一个数组,数组的length是匹配的字符串个数,每个元素是每个匹配的起始字符位置var list = str.match(Regexp/String)// 3.replace() : 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串str.replace(yourRegexp/String,new_String)

正则表达式的常见匹配语法汇总

这部分,我用一张图给大家展示一下常见的匹配语法,大家可以记住图上的一些语法,但不必都记住,需要的时候点开看就行

JS正则表达式的使用方法是什么

<!DOCTYPE html><html><head>    <title>简单注册校验</title>    <meta charset='utf-8' />    <style>    </style>    <script>        function check() {            var number = document.getElementById("number").value;            if (number == "") {                alert("手机号不能为空哦");                return false;            }            if (/^[0-9][1-9]{10}$/.test(number) == false) {                alert("手机号的格式不对");                return false;            }            var pwd = document.getElementById("pwd").value;            if (pwd == "") {                alert("密码不能为空");                return false;            }            if (pwd.length < 6) {                alert("密码的长度太短,应大于6");                return false;            }            if (pwd.length > 12) {                alert("密码的长度太长,应该小于12");                return false;            }            if (/[A-Z]/.test(pwd) == false) {                alert("密码至少要包含一个大写字母");                return false;            }            var pwd2 = document.getElementById("pwd2").value;            if (pwd != pwd2) {                alert("两次输入的密码不一样,请重新输入");                return false;            }            return true;        }    </script></head><body>    <h3 style="text-align: center;">注册账户</h3>    <fORM method="post" name="myform" onsubmit="check()">        <table align="center">            <tr>                <td>请填写注册手机号:</td>                <td><input id="number" name="number" type="text" /></td>            </tr>            <tr>                <td>请填写注册密码:</td>                <td><input id="pwd" name="passWord" type="password"></td>            </tr>            <tr>                <td>请再次输入密码:</td>                <td><input id="pwd2" name="password" type="password"></td>            </tr>        </table>        <input type="submit" name="btn" value="注册" style="display: block;margin: 0 auto;margin-top: 50px;">    </form></body></html>

到此,相信大家对“JS正则表达式的使用方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: JS正则表达式的使用方法是什么

本文链接: https://www.lsjlt.com/news/357587.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS正则表达式的使用方法是什么
    本篇内容主要讲解“JS正则表达式的使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS正则表达式的使用方法是什么”吧!测试字符串是否合规这种特性常被用来检测前端输入的字段是否符合要求...
    99+
    2023-07-06
  • Python正则表达式的使用方法是什么
    这篇文章主要讲解了“Python正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python正则表达式的使用方法是什么”吧!什么是正则表达式简而言之,正则表达式(re...
    99+
    2023-06-16
  • js正则表达式基本语法是什么
    JavaScript中正则表达式的基本语法如下:1. 字面量形式(常用):使用斜杠`/`将正则表达式包裹起来,例如`/pattern...
    99+
    2023-08-16
    js
  • js正则表达式和php正则表达式有什么区别
    本教程操作环境:Windows10系统、javascript1.8.5&&PHP7.1版、Dell G3电脑。js正则表达式和php正则表达式有什么区别总体上,PHP的正则比标准javascript的要强大。PHP有两套正则...
    99+
    2017-12-02
    JavaScript PHP
  • js 怎么使用正则表达式
    在 JavaScript 中,可以使用正则表达式的两种方式:使用 RegExp 对象或者使用正则表达式字面量。1. 使用 RegEx...
    99+
    2023-09-20
    js
  • JavaScript中正则表达式的使用方法是什么
    这篇文章主要讲解了“JavaScript中正则表达式的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中正则表达式的使用方法是什么”吧!一、什么是正则表达式是...
    99+
    2023-06-22
  • SQL正则表达式及mybatis中使用正则表达式的方法
    小编给大家分享一下SQL正则表达式及mybatis中使用正则表达式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql...
    99+
    2022-10-18
  • JS正则表达式基本用法
    JS正则表达式(Regular Expression)是一种用来匹配字符串模式的工具。它可以用来检查字符串中是否包含特定的模式、提取字符串中的特定部分、替换字符串中的特定内容等。在JS中,正则表达式以斜杠(/)开始和结束,中间是具体的模...
    99+
    2023-08-09
    js
  • JS中正则表达式全局匹配正斜杠的方法是什么
    这篇“JS中正则表达式全局匹配正斜杠的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS中正则表达式全局匹配正斜杠...
    99+
    2023-07-05
  • .NET正则表达式最佳的使用方法是什么
    本文小编为大家详细介绍“.NET正则表达式最佳的使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“.NET正则表达式最佳的使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。.NET 中的正则...
    99+
    2023-06-29
  • 正则表达式regexp_replace的使用方法
    目录前言常用案例总结前言 regexp_replace的使用非常灵活,且容易忘记,故做此笔记。 没有过多的介绍使用说明,只是根据个人理解列出很多相似案例,个人觉得通过对比,...
    99+
    2022-11-13
  • PHP正则表达式转义的方法是什么
    本篇内容主要讲解“PHP正则表达式转义的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP正则表达式转义的方法是什么”吧!正则表达式是一种用于匹配字符串的强大工具,它可以方便地进行字...
    99+
    2023-07-05
  • Java匹配正则表达式的方法是什么
    这篇文章主要介绍了Java匹配正则表达式的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java匹配正则表达式的方法是什么文章都会有所收获,下面我们一起来看看吧。一.我们先举个例子来看看Java匹配正...
    99+
    2023-07-05
  • JavaScript通过RegExp使用正则表达式的方法是什么
    本篇内容介绍了“JavaScript通过RegExp使用正则表达式的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RegExpEC...
    99+
    2023-07-05
  • 使用正则表达式数字检验的方法是什么
    使用正则表达式数字检验的方法是通过在正则表达式中使用特定的字符或字符集来匹配数字。以下是一些常见的正则表达式数字检验方法:1. 匹配...
    99+
    2023-05-31
    正则表达式数字 正则表达式
  • Python中怎么使用正则表达式及正则表达式匹配规则是什么
    1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
    99+
    2023-05-14
    Python
  • JS的构造正则表达式怎么使用
    这篇文章主要介绍“JS的构造正则表达式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JS的构造正则表达式怎么使用”文章能帮助大家解决问题。构造正则表达式使用...
    99+
    2022-10-19
  • linux正则表达式语法是什么
    Linux正则表达式的语法是基于POSIX标准的,可以用于在文本中进行模式匹配和搜索。以下是一些常用的正则表达式语法:1. 字符匹配...
    99+
    2023-08-12
    linux
  • JavaScript正则表达式的语法是什么
    这篇文章主要介绍“JavaScript正则表达式的语法是什么”,在日常操作中,相信很多人在JavaScript正则表达式的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • perl正则表达式的语法是什么
    Perl正则表达式的语法如下:1. 普通字符:匹配与其自身相等的字符。2. 元字符:具有特殊含义的字符,如 `.`、`*`、`+`、...
    99+
    2023-09-26
    perl
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作