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、内存、镜像、磁盘参数信息将默认与选择的云服务器规格保持一致。登录管理控制台。选择“计算 > 弹性伸缩 > 伸缩实例”。单击“创建伸缩配…

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

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

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

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

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

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

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

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

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

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

将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-…

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 …

石头剪刀布程序流程图_石头剪刀布!我要与电脑决战到天明!(14天)

1、学习心得原来一直以为,学了这个600集视频,应该就能自己做点啥了,比如我的最终目的:爬学区房。但是我今天学的时候,隐隐觉得,好像不大现实。毕竟,这都到了200多集,我依然还是个纯粹…

python做地图导航_「Python」利用高德地图做你想做之事

玩grasshopper基本上都知道OpenStreetMap 这个地图网站,毕竟有一个好用的地图插件,可以在Rhino中绘制出所需,但是一个不好的地方就在于国内的数据量太少,无法满足我们的需求。此次所讲的高德地图基本上可以解决我们的痛点&#xf…

elementui分页组件按钮样式修改_Vue使用Elementui修改默认最快方法!

相信大家都需要过,在Vue中使用Elementui的时候,遇到最多也最蛋疼的问题就是修改默认样式,接下来直奔主题;// template :text-inside"true" :stroke- :percentage"70" >-progress>默认样式方法…

mybatis字符串转成数字_计算机储存数字和字符的方法你了解多少?

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。本文链接: http://1t.click/J7E前言最近在学习中涉及到计算机储存、传输数字和字符等操作,由于对字节、2进制、10进制、16进制、ASCII码的概念以及它们之…

usb连接不上 艾德克斯电源_艾德克斯HT3150联机和IT6720校准联机记

大概2年前,坛里入了一台设置电压比输出电压高几伏的IT6720电源,到手发现,里面被修得惨不忍睹。到手的时候是110V的,没想到这种型号,跳线要改焊控制变压器和高压部分两个跳线,只修改了控制变压器跳线&#x…

使用java向ftp上传多张图片_ftp免费空间,利用ftp工具定时连接ftp免费空间教程及java配置...

IIS7服务器管理工具这款ftp客户端软件,可以批量管理ftp站点,还可以实现ftp定时上传、定时下载,定时备份、自动更新等功能。关于ftp客户端功能,它主要实现以下四点功能:1、ftp 批量操作2、ftp 定时同步(上传…

损失函数的意义和作用_损失函数的可视化:浅论模型的参数空间与正则

点击蓝字关注我们作者丨土豆知乎来源丨https://zhuanlan.zhihu.com/p/158857128本文已获授权,不得二次转载前言在深度学习中,我们总是不可避免会碰到各种各样的损失函数。通常来说,损失函数都是高维的函数,难以可视化为人类可以分…

postgres 把一个表的值转成另一个表的字段名_用LUT来做一个可动态配置的卷积核...

引言由于卷积核数据在计算过程中保持不变,更新较慢。这样就可以利用LUT来存储权重并同时进行乘法运算。LUT乘法器的实现很早就已经研究过,本论文正是在此基础上,提出了用于实现可配置的卷积实现方法。基于LUT的乘法器不会受到FPGA中DSP资源的…