iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何理解JavaScript正则表达式
  • 891
分享到

如何理解JavaScript正则表达式

2023-06-02 08:06:56 891人浏览 独家记忆
摘要

如何理解javascript正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、正则表达式创建var reg = /test/;var reg = new RegExp

如何理解javascript正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、正则表达式创建

var reg = /test/;

var reg = new RegExp('test');

正则表达式的exec方法

var reg = /test/;

var str = 'testrjf';

var res = reg.exec(str);

//会匹配str里面test内容,有就返回匹配的该内容,没有返回null

console.log(res);//数组形式保存test

二、正则表达式模式

这里写一个方法方便后面演示

function execReg(reg,str){

var result = reg.exec(str);

console.log(result);

}1.一片两片三四片,落尽正则全不见{n},{n-1,n},{1,}。

reg = /c{1}/;//匹配一个c

str='cainiao';

execReg(reg,str);//返回c

reg = /c{2}/;//匹配两个连续的c,{n}同理

str1='ccaniao';

str2='cacniao';

execReg(reg,str1);//返回cc

execReg(reg,str2);//返回null,没有两个连续cc

reg = /c{3,4}/;//匹配3个或4连续的c

str1='cccTest';

str2='ccccTest';

execReg(reg,str1);//返回ccc

execReg(reg,str2);//返回cccc。(正则会尽量多的匹配)

reg = /c{1,}/;//匹配1个以上的c。{2,}{3,}...同理

str1='cccTest';

str2='chjjk';

execReg(reg,str1);//返回ccc

execReg(reg,str2);//返回c

reg='/c*/和等同于reg='/c{0,}/

reg='/c+/和等同于reg='/c{1,}/

reg='/c?/和等同于reg='/c{0,1}/

这里在提示一下,正则表达式会尽可能匹配多的目标返回,有4个就不会返回3个

/^开头,结尾$/

^开头

reg = /^c/;//^表示只匹配字符串的开头

str1='维生素c';

str2='cainiao';

execReg(reg,str1);//结果为null,因为字符串‘外汇分析师’的开头并不是c

execReg(reg,str2);//这次则返回c

结尾$

reg = /c$/;//$匹配字符串结尾的字符

str1='cainiao';

str2='维生素c';

execReg(reg,str1);//返回null

execReg(reg,str2);//返回c

点“.”

reg = /./;//'.'会匹配字符串中除了换行符\n之外的所有字符

str1='cainiao';

str2='bainiao';

execReg(reg,str1);//正则匹配到了字符c

execReg(reg,str2);//正则匹配到了字符b

reg = /.+/;

str1='blueidea—经典论坛  好_。';

str2='bbs.blueidea.com';

str3='\ncainiao';

execReg(reg,str1);

//返回'blueidea—经典论坛  好_。'所有的字符都被匹配到了

execReg(reg,str2);//返回'bbs.blueidea.com'

execReg(reg,str3);//返回null

或“|“

reg = /b|c/;

str1='blueidea';

str2='cainiao';

execReg(reg,str1);//返回b

execReg(reg,str2);//返回c

reg = /^b|c.+/;

str='cainiao';

execReg(reg,str);//返回cainiao,理解成开头b|c然后.+

reg = /^b|c.+/;

str='bbs.blueidea.com';

execReg(reg,str);//返回b,这里看成开头的b或者是c.+

括号

reg = /^(b|c).+/;

str='bbs.blueidea.com';

execReg(reg,str);//此时才是开头b|c,然后.+

//回的结果后面多出来一个“,b“,这是()内的b|c所匹配的内容。

//我们在正则表达式内括号里写的内容会被认为是子正则表达式,所匹配的结果也会被记录下来供后面使用。我们暂且不去理会这个特性。

字符集合[abc]

reg = /^[abc]/;//[abc]表示a或者b或者c中的任意一个字符

str='bbs.blueidea.com';

execReg(reg,str);//返回b

reg = /^[a-zA-Z][a-zA-Z0-9_]+/;//先^[a-zA-Z],后[a-zA-Z0-9_]+

str='test';

execReg(reg,str);//返回test

反字符集合[^abc]

reg = /[^abc]/;

str='blueidea';

execReg(reg,str);//返回l(即第一个b没有匹配)

即:[^0-9] 表示非数字,[^a-z] 表示非小写字母…

边界与非边界

\b表示的边界的意思

reg = /\bc/;//表示字符串开始的c或者是结尾的c

str1='cainiao';

str2='维生素c';

execReg(reg,str1);//返回c,左边界的c

execReg(reg,str2);//返回c,右边界的c

\B表示非边界

reg = /\Bc/;//表示字符串除了开始(结尾)的c

str='aicniao';

execReg(reg,str);//返回c,中间的c

数字与非数字

\d表示数字的意思

reg = /\d/;

str='cainiao8';

execReg(reg,str);//返回8

\D表示非数字的意思

reg = /\d/;

str='cainiao8';

execReg(reg,str);//返回c

空白

\f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符。

\s匹配单个空格,等同于[\f\n\r\t\v]。

reg = /\s.+/;

str='This is a test  String.';

execReg(reg,str);//返回'is a test  String.',匹配第一个空格以及其后的所有非换行字符。

\S表示非空格字符。

reg = /\S+/;

str='This is a test  String.';

execReg(reg,str);//This,当遇到第一个空格之后,正则就停止匹配

单词字符

\w表示单词字符,等同于字符集合[a-zA-Z0-9_]。

reg = /\w+/;

str='.blueidea';

execReg(reg,str);//blueidea

\W表示非单词字符,等效于[^a-zA-Z0-9_]。

reg = /\W+/;

str='中文如何?';

execReg(reg,str);//'中文如何?'

反向引用

reg = /(\w)\1/;

str1='blueidea';

str2='bblueidea';

execReg(reg,str1);//返回null

execReg(reg,str2);//bb

//这里的“\1”就叫做反向引用,它表示的是第一个括号内的字正则表达式匹配的内容。

//在上面的例子中,第一个括号(\w)匹配了b,“\1”就同样表示b了,在余下的字符串里自然找不到b了。

不记录子正则表达式的匹配结果

使用形如(?:pattern)的正则就可以避免保存括号内的匹配结果

reg = /^(?:b|c).+/;

str='bbs.blueidea.com';

execReg(reg,str);//返回bbs.blueidea.com

//前面提到的括号里子表达式不被保存

正向预查

形式:(?=pattern),即要匹配的字符串,后面必须紧跟着pattern!

reg = /cainiao(?=8)/;//只是后面必须跟着8,但结果不匹配8

str1='cainiao9';

str2='cainiao8';

execReg(reg,str1);//返回null

execReg(reg,str2);//返回cainiao

形式:(?!pattern)和?=恰好相反,要求字符串的后面不能紧跟着某个pattern

reg = /cainiao(?!8)/;

str1='cainiao9';

str2='cainiao8';

execReg(reg,str1);//返回cainiao

execReg(reg,str2);//返回null

匹配元字符

*,+,?之类的符号,它们在正则表达式中都有一定的特殊含义,类似这些有特殊功能的字符都叫做元字符。那我们想匹配’c?'这种字符串呢?

reg = /c\?/;

str='c?';

execReg(reg,str);//返回'c?'

三、正则表达式修饰符

i: 执行对大小写不敏感的匹配。

var reg = /b/;

var str = 'BBS';

execReg(reg,str);//返回null

var reg = /b/i;

var str = 'BBS';

execReg(reg,str);//B

g: 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

在后面进行讲解

m: 执行多行匹配。

reg = /^b/;

str = 'test\nbbs';//有换行

execReg(reg,str);//null

reg = /^b/m;

str = 'test\nbbs';

execReg(reg,str);//返回b,换行后第二行b开头

四、正则表达式方法

exec方法

exec方法返回的其实并不是匹配结果字符串,而是一个对象,简单地修改一下execReg函数,来做一个实验就可以印证这一点。

function  execReg(reg,str){

var result =  reg.exec(str);

console.log(typeof result);

reg = /b/;

str='bbs.bblueidea.com';

execReg(reg,str);

//显示result的类型是object。而且是一个类似数组的对象。

其中属性:index input  0。其中index是表示匹配在原字符串中的索引;而input则是表示输入的字符串;至于0则是表示只有一个匹配结果,可以用下标0来引用这个匹配结果,这个数量可能改变。我们可以通过返回值的length属性来得知匹配结果的总数量。

然后修改execReg函数

function  execReg(reg,str){

var result =  reg.exec(str);

console.log('index:'+result.index+'\n'+'input:'+result.input+'\n');

for(i=0;i<1result.length;i++){ style="overflow-wrap: break-Word" p=""

console.log('result['+i+']:'+result[i]+'\n');

reg  = /\w/;

str='bbs.bblueidea.com';

execReg(reg,str);

看完上述内容,你们掌握如何理解JavaScript正则表达式的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何理解JavaScript正则表达式

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

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

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

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

下载Word文档
猜你喜欢
  • 如何理解JavaScript正则表达式
    如何理解JavaScript正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、正则表达式创建var reg = /test/;var reg = new RegExp...
    99+
    2023-06-02
  • JavaScript高级正则表达式如何理解
    这篇文章将为大家详细讲解有关JavaScript高级正则表达式如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript高级正则表达式1.正则表达式概述1.1什么是正则表达式...
    99+
    2023-06-26
  • 怎么理解javascript正则表达式
    本篇内容主要讲解“怎么理解javascript正则表达式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解javascript正则表达式”吧!javascr...
    99+
    2022-10-19
  • 怎样理解JavaScript 正则表达式
    今天就跟大家聊聊有关怎样理解JavaScript 正则表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 正则表达式创建JavaScript 有两种方式创建正则表达式:第一种:...
    99+
    2023-06-25
  • JavaScript 正则表达式详解
    目录1. 正则表达式创建2. 使用模式2.1 使用简单模式2.2 使用特殊字符3. 应用3.1 切分字符串3.2 分组3.3 贪婪匹配3.4 正则表达式标志3.5 test() 方法...
    99+
    2022-11-12
  • 理解python正则表达式
    在python中,对正则表达式的支持是通过re模块来支持的。使用re的步骤是先把表达式字符串编译成pattern实例,然后在使用pattern去匹配文本获取结果。 其实也有另外一种方式,就是直接使用re模块...
    99+
    2022-06-04
    正则表达式 python
  • 如何理解php的正则表达式
    如何理解php的正则表达式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、通用原子:\d : 数字。 \D : 除了数字。\...
    99+
    2022-10-18
  • 如何理解Python的正则表达式
    今天就跟大家聊聊有关如何理解Python的正则表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python正则表达式!前面也有跟大家分享关于正则表达式的Python学习教程,但是...
    99+
    2023-06-02
  • 详解JavaScript高级正则表达式
    目录JavaScript高级正则表达式1.正则表达式概述1.1什么是正则表达式1.2正则表达式的特点2.正则表达式在js中的使用2.1正则表达式的创建2.2测试正则表达式3.正则表达...
    99+
    2022-11-12
  • JavaScript如何使用正则表达式
    正则表达式是一种用来匹配字符串的模式,可以用于验证、搜索、替换字符串等。JavaScript内置支持正则表达式,本篇文章将介绍JavaScript如何使用正则表达式。正则表达式比较复杂,如果您初次接触它,可能会感到困惑。但是只要您理解了基本...
    99+
    2023-05-14
  • C#正则表达式怎么理解
    这篇文章主要讲解了“C#正则表达式怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#正则表达式怎么理解”吧!到目前为止,许多的编程语言和工具都包含对正则表达式的支持,当然.NET也不...
    99+
    2023-06-17
  • JavaScript RegExp(正则表达式) 对象
     JavaScript RegExp(正则表达式) 对象正则表达式是描述字符模式的对象。正则表达式用于在文本上执行模式匹配和“搜索和替换”功能。var patt = /JC2182/i示例说明:&nb...
    99+
    2023-06-03
  • JavaScript正则表达式怎么记
    这篇文章给大家分享的是有关JavaScript正则表达式怎么记的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们知道,正则表达式是一个处理字符串中很实用的技巧。然而,即便是Jav...
    99+
    2022-10-19
  • JavaScript正则表达式怎么用
    这篇文章主要为大家展示了“JavaScript正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式怎么用”这篇文章吧。什...
    99+
    2022-10-19
  • 如何理解PHP正则表达式函数库
    如何理解PHP正则表达式函数库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。浅析PHP正则表达式函数库是什么呢?这里向你介绍了PHP正则表达式函数库(POSIX...
    99+
    2023-06-17
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • Javascript中正则表达式的应用详解
    目录stringsearchreplacematch:RegExp总结正则表达式 在前端中的应用也是比较常见的,我们在有时候也需要 用js 对某些字符串进行查找\捕获 或者 替换. ...
    99+
    2022-11-13
  • JavaScript正则表达式中g标志详解
    目录缘起解密过程搜索引擎源码层面结论缘起 有一天在思否社区看到有个问题,大致描述如下 const list = ['a', 'b', '-', 'c', 'd']; const re...
    99+
    2022-11-13
  • Python 正则表达式详解
    目录1.正则表达式是什么2.1用正则表达式2.2匹配原理2.3常用函数总结1.正则表达式是什么 很简单就是一种字符串匹配,eg: 比如你在注册账户时我们需要对用户的用户名判断是否合法...
    99+
    2022-11-12
  • Ruby正则表达式详解
    目录Ruby 正则表达式语法实例正则表达式修饰符正则表达式模式 正则表达式实例字符 字符类 特殊字符类 重复 非贪婪重复 ...
    99+
    2023-05-15
    Ruby 正则表达式 Ruby 正则表达式详解 Ruby 正则表达式实例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作