首页 web前端 js教程 正则表达式小结(实战归纳)

正则表达式小结(实战归纳)

Mar 30, 2018 pm 01:42 PM
实战 表达式

这次给大家带来正则表达式小结(实战归纳),使用正则表达式实战的注意事项有哪些,下面就是实战案例,一起来看一下。

正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

下面小编给大家总结了些关于正则表达式知识点,具体内容如下所示:

1、元字符

  [拥有特殊含义的元字符]
  \d -> 匹配一个0-9的数字,相当于[0-9],和它相反的是\D ->匹配一个除了0-9的任意字符
  \w -> 匹配一个0-9、a-z、A-Z、_的数字或字符,相当于[0-9a-zA-Z_]
  \s -> 匹配一个空白字符(空格、制表符...)
  \b -> 匹配一个单词的边界
  \t -> 匹配一个制表符
  \n -> 匹配一个换行
  . -> 匹配一个除了\n以外的任意字符
  ^ -> 以某一个元字符开头
  $ -> 以某一个元字符结尾
  \ -> 转移字符
  x|y -> x或者y的一个
  [xyz] -> x、y、z中的任意一个
  [^xyz] -> 除了xyz中的任意一个字符
  [a-z] -> 匹配a-z中的任意一个字符
  [^a-z] -> 匹配除了a-z中的任意一个字符
  () -> 正则中的分组

  注意:

  1)关于[]

    a、[+] ->中括号中出现的所有字符都代表的是本身的意思
    b、[12-65] ->这个不是12-65而是1/2-6/5三者中的一个

  2)关于()

    a、分组的作用是改变默认的优先级,例如:/^18|19$/,181、189、119、819、1819...都符合,而不是我们认为的18或19,但是改成/^(18|19)$/就是单纯的18或19了
    b、可以在捕获大正则匹配的内容同时,把分组匹配的内容也进行捕获->分组捕获
    c、分组引用,例如:/^(\d)(\w)\2\1$/,这里的\2是和第二个分组出现一模样的内容,\1是和第一个分组出现一模一样的内容,例如:"0aa0"就符合了

  [代表数量的量词元字符]

  * -> 0到多个
  + -> 1到多个
  ? -> 0到1个
  {n} -> 出现n次
  {n,} -> 出现n到多次
  {n,m} -> 出现n到m次

  注意:

  1)关于?的几种情况

    a、放在非量词元字符后面,代表出现0-1次
    b、放在量词元字符后面,代表取消捕获时候的贪婪性,例如:reg=/\d+/; reg.exec("2015") -> "2015" 但是如果正则这样写 reg=/\d+?/; reg.exec("2015") -> "2"
    c、在分组开头加?:,代表当前的分组只是匹配不进行捕获,例如:/^(?:\d+)$/
    d、在分组开头加?=,正向预查,例如:/^abcdef(?=1|2)$/ 只有"abcdef1"和"abcdef2"才符合
    e、在分组开头加?!,负向预查,例如:/^abcdef(?!1|2)$/ 除了"abcdef1"和"abcdef2"不符合,其他的只要是"abcdef(任何的东西)"都符合

  [代表本身意思的元字符]

  除了以上的,在字面量方式中,我们出现的其他任意字符代表的都是自己本身的意思

  var num=12;
  var reg=/^\w"+num+"$/; ->这里"+num+"不是把变量的值拼接,而这里的不管是"还是+都是元字符

  ->对于需要拼接字符串和变量的方式我们只能使用实例方式创建正则

2、修饰符

  i -> ignoreCase 忽略字母的大小写
  g -> global 全局匹配 (加上g可以解决正则捕获时候的懒惰性)
  m -> multiline 多行匹配

3、项目中常用的正则

  1)有效数字的

var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
登录后复制

  2)邮箱的

 var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
登录后复制

  3)电话的

 var reg = /^1\d{10}$/;
登录后复制

  4)年龄在18-65之间的

 var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/;
登录后复制

  5)中文姓名

 var reg = /^[\u4e00-\u9fa5]{2,4}$/;
登录后复制

  6)身份证

 var reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;
 //-> 12828(省市县) 1990(年) 12(月) 04(日) 06 1(奇数是男偶数是女) 7(数字或者X)
登录后复制

4、正则的匹配

  reg.test([string]) ->true就是匹配成功  false->匹配不成功

5、正则的捕获

  1)reg.exec([string])

    -> 首先去匹配,匹配成功在捕获,返回的是一个数组; 如果匹配不成功返回的是null;
    -> 正则的捕获即懒惰又贪婪
    -> 解决懒惰性 在正则的末尾增加全局修饰符g
    -> 解决贪婪性 在量词后面加?

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

正则的模式修饰符使用详解

在正则表达式中有哪些新增特性

以上是正则表达式小结(实战归纳)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP实战:快速实现斐波那契数列的代码示例 PHP实战:快速实现斐波那契数列的代码示例 Mar 20, 2024 pm 02:24 PM

PHP实战:快速实现斐波那契数列的代码示例斐波那契数列是数学中一个非常有趣且常见的数列,其定义如下:第一个和第二个数为0和1,从第三个数开始,每个数都是前两个数的和。斐波那契数列的前几个数字依次为0,1,1.2,3,5,8,13,21,...依此类推。在PHP中,我们可以通过递归和迭代两种方式来实现斐波那契数列的生成。下面我们分别来展示这两

Java开发实战:集成七牛云云存储服务实现文件上传 Java开发实战:集成七牛云云存储服务实现文件上传 Jul 06, 2023 pm 06:22 PM

Java开发实战:集成七牛云云存储服务实现文件上传引言随着云计算和云存储的发展,越来越多的应用程序需要将文件上传至云端进行存储和管理。云存储服务的优势在于高可靠性、可扩展性和灵活性。本文将介绍如何使用Java语言开发,集成七牛云云存储服务,实现文件上传功能。七牛云简介七牛云是国内领先的云存储服务提供商,其提供了全面的云存储和内容分发服务。用户可以通过七牛云提

深入学习 Elasticsearch 查询语法与实战 深入学习 Elasticsearch 查询语法与实战 Oct 03, 2023 am 08:42 AM

深入学习Elasticsearch查询语法与实战引言:Elasticsearch是一款基于Lucene的开源搜索引擎,主要用于分布式搜索与分析,广泛应用于大规模数据的全文搜索、日志分析、推荐系统等场景。在使用Elasticsearch进行数据查询时,灵活运用查询语法是提高查询效率的关键。本文将深入探讨Elasticsearch查询语法,并结合实际案例给出

MySQL表设计实战:创建一个电商订单表和商品评论表 MySQL表设计实战:创建一个电商订单表和商品评论表 Jul 03, 2023 am 08:07 AM

MySQL表设计实战:创建一个电商订单表和商品评论表在电商平台的数据库中,订单表和商品评论表是两个非常重要的表格。本文将介绍如何使用MySQL来设计和创建这两个表格,并给出代码示例。一、订单表的设计与创建订单表用于存储用户的购买信息,包括订单号、用户ID、商品ID、购买数量、订单状态等字段。首先,我们需要创建一个名为"order"的表格,使用CREATET

Golang实战:数据导出功能的实现技巧分享 Golang实战:数据导出功能的实现技巧分享 Feb 29, 2024 am 09:00 AM

数据导出功能在实际开发中是非常常见的需求,特别是在后台管理系统或者数据报表导出等场景中。本文将以Golang语言为例,分享数据导出功能的实现技巧,并给出具体的代码示例。1.环境准备在开始之前,确保已经安装好Golang环境,并且熟悉Golang的基本语法和操作。另外,为了实现数据导出功能,可能还需要使用第三方库,比如github.com/360EntSec

手把手教你uniapp和小程序分包(图文) 手把手教你uniapp和小程序分包(图文) Jul 22, 2022 pm 04:55 PM

本篇文章给大家带来了关于uniapp跨域的相关知识,其中介绍了uniapp和小程序分包的相关问题,每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分,希望对大家有帮助。

Vue实战:日期选择器组件开发 Vue实战:日期选择器组件开发 Nov 24, 2023 am 09:03 AM

Vue实战:日期选择器组件开发引言:日期选择器是在日常开发中经常用到的一个组件,它可以方便地选择日期,并提供各种配置选项。本文将介绍如何使用Vue框架来开发一个简单的日期选择器组件,并提供具体的代码示例。一、需求分析在开始开发之前,我们需要进行需求分析,明确组件的功能和特性。根据常见的日期选择器组件功能,我们需要实现以下几个功能点:基础功能:能够选择日期,并

Golang动态库实战:案例分享与实用技巧 Golang动态库实战:案例分享与实用技巧 Mar 01, 2024 am 08:30 AM

Golang动态库实战:案例分享与实用技巧在Golang(Go语言)中,使用动态库可以实现模块化开发、代码重用以及动态加载等功能。本文将通过案例分享和实用技巧,介绍如何在Golang中使用动态库,以及如何利用动态库提升代码的灵活性和可维护性。什么是动态库动态库是一种包含可在运行时加载的函数和数据的文件。不像静态库需要在编译时链接到应用程序中,动态库可以在运行

See all articles