热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

如何快速学习正则表达式

在日常工作中,我们经常写正则表达式,比如在表单中经常用来验证用户输入的格式是否正确。接下来通过本文给大家介绍如何快速学习正则表达式,感兴趣的小伙伴一起学习吧

正则表达式概念

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

在日常工作中,我们经常写正则表达式,比如在表单中经常用来验证用户输入的格式是否正确,我们就会用到正则表达式;可以把正则表达式看做是可以描述问题的语言,它就是专门为模式匹配而设计的

-------------------------------------------------------------------------------

正则表达式的语法

可以简单粗暴得把正则表达式理解为查找东西,举个例子:要在"Hello World"中找到"world"这个单词,先用直白的语言来描述就是查找"从w开头到d结束的字母组合",使用正则来描述就是\bw\w*d\b,这个就是模式字符串,它由元字符和字面量字符组成

•常见的元字符如下:

•正则表达式中的旗标

•正则表达式中的转义字符


JS中的正则表达式

•两种生成方式,

举例:匹配0-9有没有出现

代码如下:

1、通过RegExp var reg=new RegExp('^[0-9]','g');
2、通过表达式字面量 var reg=/^[0-9]/g;

•两种常用的方法

test()、exec()

代码如下:

1、test方法:如果输入字符串与模式相匹配,test就返回真,没有则返回假
2、exec方法:如果输入字符串与模式匹配,则返回一个数组,没有匹配就返回null

/*test()方法,匹配是否有出现0-9*/
var reg1=/^[0-9]/;
reg1.test('There is no number');
//返回结果为false
/*exec()方法,匹配句子里面的单词,两个单词一组*/
/*没有设置全局旗标*/
var reg2=/(\w+)\s(\w+)/;
reg2.test('There is no number');
//返回结果['There is','There','is']
//第0个元素是匹配的字符串,后面两个元素分别是分组引用的子字符串
/*设置全局旗标*/
var reg3=/(\w+)\s(\w+)/g;
reg3.test('There is no number');
//设置了全局旗标的话,exec()会循环寻找
//第一次查找结果['There is','There','is'],第二次结果['no number','no','number'],第三次结果null 
exec()方法如果设置了全局旗标,在循环中使用必须要手动设置其reg.lastIndex = 0;,否则它会间隔匹配

--------------------------------------------------------------------------------

字符串对象与正则表达式

•在string对象中有不少以正则表达式对象作为参数的方法

属性 说明
match(regexp) 返回正则表达式regexp的匹配结果
replace(searchValue,replaceValue) 将searchValue(正则表达式或是字符串值)
替换为replaceValue,并返回响应的字符串
search(regexp) 返回正则表达式regexp匹配位置的下标,没有匹配就返回-1
split(separator,limit) 通过参数separator(字符串或是正则表达式)
对字符串进行分割,并返回一个字符串数组

•match方法会返回元素与模式相匹配的字符串的数组,设置全局旗标时,会返回所有与模式相匹配的字符串数组,不设置时和exec方法相同

应用例子:

var text='abc def ghi jkl';
//设置全局旗标
text.match(/\w+/g);
//["abc","def","ghi","jkl"]
//不设置全局旗标
text.match(/(\w+)\s(\w+)/);
//["abc def","abc","def"] •replace方法返回被替换的字符串,如果设置了全局旗标,则替换全部匹配了的字符串,否则只替换第一个匹配的字符串;replace中如果第一个参数用了分组,第二个参数能够通过符号来标识分组的前向引用

应用例子:

var text="abc def ghi jkl";
//将空格替换为字符
text.replace(/\s/,',');
//"abc,def ghi jkl"
text.replace(/\s/g,',');
//"abc,def,ghi,jkl"
//对空格之前的字符分组,用逗号替换并前向移动一位
text.replace(/(.)\s/g,",$1");
//"ab,cde,fgh,igkl" •在search与split方法中,正则表达式的全局旗标不起作用

以上内容是小编给大家介绍的快速学习正则表达式 的方法,希望对大家有所帮助!


推荐阅读
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 本文将带您了解Cocos家族的不同版本和分支,特别是Cocos Creator的发展历程及其核心特性,帮助初学者快速入门。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 使用M函数轻松处理Excel中的多分隔符分列问题
    在处理Excel数据时,经常会遇到需要根据不同的分隔符来拆分单元格中的内容。本文介绍了一种利用M函数在Power Query中实现这一需求的方法,即使面对多种分隔符也能轻松应对。 ... [详细]
  • 尝试利用Delphi6中的Indy组件实现ASP自动登录功能时遇到了问题。在尝试复现网络上找到的一个示例代码时,程序无法正常编译运行,报错信息指出Post方法没有适用的重载版本。 ... [详细]
  • 每个企业都渴望在市场上占据有利位置,提高产品知名度和品牌认可度,进而促进业务增长。本文将探讨如何通过有效的软文营销策略实现这一目标。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • 当Windows 10系统遇到蓝屏故障时,有时不会显示详细的错误信息,这给问题的诊断带来了困难。本文将介绍如何通过简单的方法使Win10蓝屏时显示具体的错误代码。 ... [详细]
  • 本文深入探讨网页游戏的开发流程,涵盖从程序框架设计到具体实现的技术细节,旨在为开发者提供全面的指导。 ... [详细]
  • 本文探讨了汉语成语‘走投无路’在英语中的多种翻译方法,该成语用于形容一个人处于极度困难的境地,几乎没有任何解决办法。文章不仅提供了直接的翻译,还结合具体语境给出了更为地道的英文表达。 ... [详细]
author-avatar
阿爷取的名字-Xx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有