正则表达式RegExp语法与用法详解

yizhihongxing

正则表达式RegExp语法与用法详解

什么是正则表达式?

正则表达式是一种通用的字符匹配模式,可以用来进行字符串的查找替换、格式验证等操作。在许多编程语言中都具有很重要的地位。

正则表达式定义

一个正则表达式是由普通字符(例如字符 a 到 z )以及特殊字符(称为元字符)组成的文字模式。模式描述了要匹配的字符类型或顺序。

在JavaScript中,使用RegExp类来创建正则表达式,语法格式如下:

var regExp = new RegExp(pattern, attributes);

其中,pattern参数为正则表达式模式,attributes是可选的修饰符,具体可选值有:

  • g 全局匹配
  • i 忽略大小写
  • m 多行匹配

例如,创建一个匹配所有数字的正则表达式可以写为:

var regExp = new RegExp("\\d");

var regExp = /\d/;

两者的效果是相同的,\d是正则表达式中的特殊字符,表示匹配任意一个数字字符。

常用元字符

.(点)

.是正则表达中的一个特殊字符,表示匹配任意一个字符,例如:

var regExp = /a.b/; // 匹配一个字符为 a 一个字符为 b 的字符串
console.log(regExp.test("abc")); // true
console.log(regExp.test("abb")); // false

[](字符组)

字符组用于指定一个字符集合,匹配时字符串中该位置的字符必须是集合中的任意一个,例如:

var regExp = /[ab]/; // 匹配一个字符为a或b的字符串
console.log(regExp.test("a")); // true
console.log(regExp.test("b")); // true
console.log(regExp.test("c")); // false

[^](非字符组)

与字符组相反,[^]用于指定一个字符集合,匹配时字符串中该位置的字符不能是集合中的任意一个,例如:

var regExp = /[^ab]/; // 匹配一个字符不为a或b的字符串
console.log(regExp.test("c")); // true
console.log(regExp.test("a")); // false
console.log(regExp.test("b")); // false

\d(数字字符)

\d表示匹配任意一个数字字符,等价于[0-9],例如:

var regExp = /\d/;
console.log(regExp.test("1")); // true
console.log(regExp.test("a")); // false

\D(非数字字符)

\D表示匹配任意一个非数字字符,等价于[^0-9],例如:

var regExp = /\D/;
console.log(regExp.test("a")); // true
console.log(regExp.test("1")); // false

\s(空白字符)

\s表示匹配任意一个空白字符(包括空格、制表符等),例如:

var regExp = /\s/;
console.log(regExp.test(" "));  // true
console.log(regExp.test("a"));  // false

\S(非空白字符)

\S表示匹配任意一个非空白字符,例如:

var regExp = /\S/;
console.log(regExp.test("a"));  // true
console.log(regExp.test(" "));  // false

\w(单词字符)

\w表示匹配任意一个单词字符(包括数字、字母、下划线),例如:

var regExp = /\w/;
console.log(regExp.test("a"));   // true
console.log(regExp.test("1"));   // true
console.log(regExp.test("_"));   // true
console.log(regExp.test(" "));   // false

\W(非单词字符)

\W表示匹配任意一个非单词字符,例如:

var regExp = /\W/;
console.log(regExp.test(" "));   // true
console.log(regExp.test("a"));   // false
console.log(regExp.test("1"));   // false
console.log(regExp.test("_"));   // false

常用量词

在正则表达中,使用量词来指定匹配的次数,常用量词如下:

* (零次或多次)

*表示匹配前面的字符出现零次或多次,例如:

var regExp = /ab*c/; // 匹配一个或多个b的字符串
console.log(regExp.test("ac"));    // true
console.log(regExp.test("abc"));   // true
console.log(regExp.test("abbbbbbc"));  // true
console.log(regExp.test("adc"));   // false

+ (至少一次)

+表示匹配前面的字符至少出现一次,例如:

var regExp = /ab+c/; // 匹配至少一个b的字符串
console.log(regExp.test("ac"));    // false
console.log(regExp.test("abc"));   // true
console.log(regExp.test("abbbbbbc"));  // true
console.log(regExp.test("adc"));   // false

? (零次或一次)

?表示匹配前面的字符零次或者一次,例如:

var regExp = /ab?c/; // 匹配一个或零个b的字符串
console.log(regExp.test("ac"));    // true
console.log(regExp.test("abc"));   // true
console.log(regExp.test("adc"));   // false

{n} (确定的重复次数)

{n}表示匹配前面的字符出现n次,例如:

var regExp = /ab{3}c/; // 匹配3个b的字符串
console.log(regExp.test("abbbc")); // true
console.log(regExp.test("abbc"));  // false
console.log(regExp.test("abbbbc"));// false

案例示范

下面通过一个案例来演示正则表达式的运用。

例一:验证电子邮箱

// 匹配任意一个由数字、字母、下划线、横杠、点号组成的字符串,并以 @ 符号作为分隔符号,后面是域名
var regExp = /^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,})$/;

console.log(regExp.test("12345@qq.com"));  // true
console.log(regExp.test("1612658115@qq.com"));  // true
console.log(regExp.test("yll_1995@outlook.com"));  // true
console.log(regExp.test("128.com"));  // false

结语

以上就是正则表达式的语法和用法,需要注意的是,正则表达式是一项强大的工具,但也需要耐心和细心,多练习才能熟练掌握。

参考

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:正则表达式RegExp语法与用法详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 轻松理解Javascript变量的相关问题

    轻松理解JavaScript变量的相关问题 JavaScript中的变量是用来存储数据的。但是在JavaScript中,变量有很多相关的问题,这些问题可能会困扰初学者。在本文中,我将详细讲解以下问题: JavaScript中的变量类型有哪些? 如何声明和赋值变量? JavaScript中的作用域是什么? 变量的生命周期是什么? 如何避免变量名冲突? 变量类型…

    JavaScript 2023年5月19日
    00
  • js中格式化日期时间型数据函数代码

    要在JavaScript中格式化日期时间型数据,可以使用Date对象自带的方法,也可以使用第三方库如Moment.js。下面将分别介绍这两种方法的使用。 使用Date对象自带的方法 使用Date对象自带的方法可以方便地获取当前的日期时间或指定日期时间的格式化值。以下是一些常用的Date对象方法及其返回值: Date.getFullYear() 获取指定日期的…

    JavaScript 2023年5月27日
    00
  • js简单实现用户注册信息的校验代码

    下面就是关于js简单实现用户注册信息的校验代码的完整攻略。 一、需求分析 在开发一个注册功能的网站时,我们需要对用户输入的注册信息进行校验,包括以下内容: 用户名:长度在6-20之间,只能包含字母、数字、下划线。 密码:长度在6-20之间,包含至少一个大写字母、至少一个小写字母和至少一个数字。 确认密码:需要与密码一致。 邮箱:需要符合邮箱格式。 手机号码:…

    JavaScript 2023年6月10日
    00
  • javascript中利用柯里化函数实现bind方法

    利用柯里化函数实现bind方法 在 JavaScript 中,bind() 是一个用于改变函数 this 上下文的方法。它返回一个新函数,新函数的 this 指向 bind() 的第一个参数,并且在调用的时候可以传入多个参数传递给原函数。这个方法在函数式编程中非常有用,因为它允许我们更容易地组合函数。 柯里化函数可以用来实现 bind() 方法,让我们来看看…

    JavaScript 2023年6月10日
    00
  • JS高级技巧(简洁版)

    JS高级技巧(简洁版) 什么是JS高级技巧? JS高级技巧是指在JS中使用更加复杂和不常见的程序设计方法,能够解决更加棘手的问题。这些技巧常常涉及JS的一些高级特性和概念,例如函数式编程、闭包、原型链等。 常见的JS高级技巧 1. 函数式编程 函数式编程是JS高级技巧中非常重要的一部分。它强调将程序中的函数看作一等公民,将函数设计成可以被传递、修改和组合的对…

    JavaScript 2023年5月18日
    00
  • javascript系统时间设置操作示例

    下面是关于”JavaScript系统时间设置操作示例”的完整攻略。 1. 简介 时间是计算机世界中的基本元素,而JavaScript也提供了一些相关的API允许我们进行时间操作。系统时间设置是其中的一项,它可以帮助我们动态的调整JavaScript代码中的时间,也可以帮助我们进行一些测试与调试。 2. 设置系统时间 2.1 系统时间获取 在设置系统时间之前,…

    JavaScript 2023年5月27日
    00
  • JS实现的自动打字效果示例

    接下来我将为你讲解“JS实现的自动打字效果示例”的完整攻略。 这是一个比较常见的网页效果,可以使用 JavaScript 来实现。整个过程大体可分为以下几个步骤: 步骤一:准备 HTML 结构 首先,你需要准备一个包含文字内容的 HTML 元素,例如: <div id="text"> <p>这是一段文本内容,我们将…

    JavaScript 2023年5月28日
    00
  • JavaScript中的”=、==、===”区别讲解

    当我们使用JavaScript进行开发的时候,经常需要判断两个变量是否相等或者给一个变量赋值,这时我们就需要使用到 =、== 以及 === 这些操作符。这里我们就来详细讲解一下它们的区别与应用。 = 赋值操作符 在JavaScript中,单个等号(=)表示将右侧的值赋给左侧的变量。例如下面的代码将数值1赋给变量x: var x; x = 1; == 相等操作…

    JavaScript 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部