js 正则 或者_如何彻底搞懂面向 Web 开发者的正则表达式?

0c25ae7df8466c7dea307ad4822a50fb.gif

对于正则表达式,开发者如何跳出云里雾里的谜团?

0c6e2f902bbfca11ebc5f9637f54e7b3.png

作者 | Chris Achard

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

9b02414846f47a8ba301af5fdbfd9fd6.png

正则表达式能在字符串中查找匹配特定模式的子字符串。

在JavaScript中,可以通过斜线 / / 来创建,也可以通过new RegExp来创建,然后就能使用match、test、replace等方法。你可以事先定义正则表达式,也可以在调用方法时随时定义。

08ae89a21e6e99ebd488a75feb30cb64.png3b4efebe3200f8dfdac9bf5fac1cce96.png

每次匹配一个字符,将多个字符放到方括号 中可以匹配多个匹配的字符。

用横线 - 匹配字符范围。

71e54e3240e88eaec2d0d4a199741700.png29da8187e6e87138a227df4349afb60c.png

在正则表达式末尾添加额外的标记来修改匹配器的行为。

JavaScript支持如下标记:

  • i = 不区分大小写

  • m = 多行匹配

  • g = 全局匹配(查找所有匹配,而不是仅查找一个)

5817d695c06192e961b90a1a7f161429.pngf3d3f5a4574fde1c6193f804de2b9fd6.png

在模式开头使用箭头 ^ 表示“字符串开头”。

在模式末尾使用美元符号 $ 表示“字符串结尾”。

将多个模式放在一起以匹配更长的字符串。

fd7ba51c9c6f5c9e90a525792c897dd8.png9ef93d506a2f09906d80ddf8c3d3475f.png

使用通配符和特殊的转义字符来匹配字符类。

. = 除了换行之外的任何字符。

  • d = 数字

  • D = 非数字

  • s = 空白

  • S = 非空白

  • = 新行

3ae72f239d4cd31fd87e1767ae24b6ff.png5f0b7e2a03564580d6be79d9fb18686a.png

用数量修饰符来匹配特定数量的字符。

  • * = 零个或多个

  • + = 一个或多个

  • ?= 零个或一个

  • {3} = 正好3个

  • {2,4} = 2, 3, 或4个

  • {2,} = 2或多个

816323f7219a7c2376e2271dbac06065.png99bc2b52fbbe52637eecd50f8956d120.png

使用括号 来分组。

match会返回完整的匹配,外加每个分组,除非你使用了g标记。

在括号 内使用管道符号 | 来表示分组的匹配内容。

  • | = 或者

4469471aa84b2deb7dd088a6a8f64f10.png7a8a21411720897a74575312bb781626.png

要匹配特殊字符,需要用反斜杠 将其转义。

JS正则表达式中的特殊字符包括:^ $ . * + ? { } |

所以,要想匹配星号,需要使用:

  • *

  • 而不能仅使用 *

c4d99e7a8e56be6180466914af86c1ec.pngf83eb88018dc8a05e7bfdb0360f5e25b.png

要想匹配除了特定字符之外的任意字符,可以在方括号内使用^。

这意味着 ^ 有两种含义,可能会造成混淆。

当它出现在正则表达式开头时,它表示“字符串开头";出现在方括号内时,表示“不是这些字符串”。

49308357cad760adf9c5c795c9c12ea4.png2860b0acf772148bc2aee46e252f8e65.png

正则表示可以用来查找并匹配各种东西,比如URL和文件名。

但是!对于非常复杂的任务,使用正则表达式时一定要小心,比如分析电子邮件(你很容易就会弄得一团糟),或者分析HTML(HTML不是正规的语言,所以没办法完全使用正则表达式来解析)。

但是,对于绝大多数Web开发者来说,掌握这些最基本的组成部分就够了。

原文:https://dev.to/chrisachard/intro-to-regex-for-web-developers-2fj4

作者:Chris Achard,程序员,日常使用JS, React, Rails和Node,在egghead.io上讲课。

本文为 CSDN 翻译,转载请注明来源出处。

【END】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域环境下文件服务器,域和文件服务器

域和文件服务器 内容精选换一换您可以使用已有的弹性云服务器快速创建伸缩配置。此时,伸缩配置中的云服务器类型、vCPU、内存、镜像、磁盘参数信息将默认与选择的云服务器规格保持一致。登录管理控制台。选择“计算 > 弹性伸缩 > 伸缩实例”。单击“创建伸缩配…

项目的启动顺序_多个项目进行如何做好进度管理

多项目并行比单个项目管理更容易出现意外,因为与单项目管理相比,多项目管理的环境显得更加复杂和难以管控。需要协调来自不同部门的资源;项目的优先级经常会被调整;有些项目是相互依存的;各部门间沟通困难;…

python 描述_python描述符

class Type:def __init__(self, key, expect_type):self.key keyself.expect_type expect_typedef __get__(self, instance, owner):print(执行get方法)return instance.__dict__[self.key]def __set__(self, instance, value):print(执行set方法)if not isinstance(value, s…

keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案

原标题:nginxkeepalived高可用服务器宕机解决方案1.基本服务器宕机的主从切换配置两台nginx服务器,分别安装keepalived,配置/etc/keepalived/keepalived.conf主从配置:主nginx修改主nginx下/etc/keepalived/keepalived.conf文件备…

鸽主姓名查询成绩_鸽主姓名

鸽主姓名参赛鸽环号羽色100元组200元组备注范党生2011-33-016425雨点1002011-33-016428雨点100八闽山庄2011-27-055527雨点1002002011-27-055528雨点100200高凌振2011-27-098801绛100陈兆雄2011-27-034545雨点100大鹏鸽舍2011-27-020349灰200庞立新陈磊2011-01-861268绛200李军…

idea启动tomcat没有加载项目_震惊!我三步就搞定了 Tomcat 源码环境搭建!

喜欢请点关注引言随着微服务的流行,轻量级的服务应用器也是跟着大火了。毕竟那些企业级的服务应用器部署搭建成本太高。并且springboot 自带的就是 tomcat 服务。所以我们也有必要学习 tomcat 的相关知识啦,我们在项目中也用的很多,但是我们往…

云服务器装哪些版本的系统好,云服务器按装什么系统好

云服务器按装什么系统好 内容精选换一换云耀云服务器(Hyper Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立、完整的操作系统和网络功能。提供快速应用部署和简易的管理能力,适用于网站搭建、开发环境等低负载应…

python正则匹配括号内任意字符_Python正则表达式:字符集、限制范围和否定

1.字符集虽然句点可以匹配任意符号,但是如果需要匹配某些特定字符,可以使用方括号([])。方括号的正则表达式能够匹配方括号内包含的任意字符。下列为一些示例:正则表达式1:b[aeiu]其匹配的字符串是bat、bet、bit、but正则表达式2:[er][23][dp…

mysql to data_mysql str_to_date 字符串转换为日期

1.mysql日期和字符相互转换方法date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char();str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();%Y:代表4位的年份%y:代表2为的年份%m:代表月, 格式为(01……12)%c&am…

java 加密_Java版SMS4加密解密算法

特别说明:该专栏文章均来源自微信公众号《大数据实战演练》,欢迎关注!前言最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现。一、概述1.1 基本概念本算法是一个分组算法&#xff…

mysql触发器求属性和_MySQL触发器demo

MySQL触发器示例0写在之前:最近在带浙大本科生的数据库系统的上机课,我手里拿到的教学文档非常的老,本人及不习惯老文档里的sql server的操作,就让大家安装的MySQL,这就有了个问题:MySQL上很多SQLserver的操…

监控mysql数据库里的数据_有谁知道哪种软件可以监控mysql数据库上执行的数据脚本吗?...

LOG4j可以配置log4j.rootLoggerDEBUG, stdoutlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern%c{1} - %m%nlog4j.logger.java.sql.PreparedStatementDEBUGl…

将dll制作成控件_全国首例将“影视作品”制作成“网络图片集”方式侵权案宣判...

最早知道“图解电影”是在百度贴吧,以前贴吧会有很多以截取电影主要剧情截图,介绍电影故事梗概的推荐电影形式,目前也有很多短视频平台和视频平台,推出电影主要内容的剪辑片段,那么,以这样的形式接受一部电…

阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区

一、首先得在阿里云等云主机上申请两台主机二、现在连上去安装mysql1、通过安装源将mysql下载下来[rootiz2ze2llim71y07x3numlbz ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm--2018-03-26 16:52:00-- https://dev.mysql.com/get/mysql57-…

为什么python提示没有clock_python – 为什么time.clock比time.time给出更长的时间?

我使用time.clock和time.time在Ubuntu上定时了一段python代码:clock elapsed time: 8.770 stime elapsed time: 1.869 s我知道time.time使用系统时间和time.clock使用处理器时钟.当time.time给出比time.clock更长的经过时间时,这对我来说是有意义的:处理…

kalman滤波在雷达目标跟踪中的应用_简述Automotive radar中的多目标跟踪处理

毫米波雷达在目前的先进辅助驾驶(ADAS)中的应用主要体现在自适应巡航控制(Adaptive Cruise Control,ACC),预碰撞(PreCrash),泊车辅助(Parking Aid),变道辅助(…

oracle 拼接多个列_ORACLE实现类似mysql的find_in_set

在程序开发的过程中有很多的场景都会使用一个字段保存多个信息并且使用符号分隔,比如写一篇文章,保存了所有赞赏人员的ID。在一般的应用中除了保存外,还需要对此字段进行一些搜索,如站点中搜索所有我赞赏的文章。下面我们就来讲一…

放大缩小保证div对齐_NFS Write IO 不对齐深度分析

导读:NFSClient 对大多数的应用写入没有做对齐优化,本文根据 IO 不对齐的原因给出了若干实践建议。作者 | 裴晓辉背景最近团队小伙伴弗曼统计了线上用户数据写入对齐情况,通过统计数据发现了一个有趣的现象: 用户写入请求中近 70% 的数据块 4…

MySQL+for+Mac下载_MySQL For mac

MySQL For Mac官方版是一款可以在苹果电脑MAC OS平台上使用的多线程的、结构化查询语言(SQL)数据库服务器,SQL在世界上是最流行的数据库语言,MySQL For Mac最新版的执行性能非常高,运行速度非常快,并且MySQL For Mac非常容易使用。MySQL For …

mysql断电不受影响db引擎_一次服务器断电,造成innodb引擎表(日志表)损坏的解决办法...

1、mysql日志报错innodb引擎提示数据库没有正常关闭,报innodb错误180112 0:49:28 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information from the .ibd files...InnoDB: Restoring possible hal…