javascript之正则表达式基础知识小结

JavaScript之正则表达式基础知识小结

正则表达式(Regular Expression)是一个用来处理文本的强大工具,具有非常丰富的语法和大量的用途,它可以用来处理文本的搜索、匹配、替换、验证等方面的问题。

正则表达式创建

在 JavaScript 中,正则表达式可以通过两种方式来创建:

1. 通过字面量形式创建

var reg = /ab+c/;

2. 通过 RegExp() 构造函数创建

var reg = new RegExp("ab+c");

元字符

元字符是用来表示特殊含义的字符,下面是一些常用的元字符:

元字符 描述
\ 转义字符
. 匹配任意字符(除了换行符)
^ 匹配字符串开头
$ 匹配字符串结尾
* 匹配前面的表达式零次或多次
+ 匹配前面的表达式一次或多次
? 匹配前面的表达式零次或一次
{n} 匹配前面的表达式 n 次
{n,} 匹配前面的表达式至少 n 次
{n,m} 匹配前面的表达式 n 到 m 次
[...] 匹配字符集中的任意一个字符
[^...] 匹配除了字符集中的任意一个字符外
(…) 分组
|

限定符

限定符指的是用来限定一个表达式匹配次数的符号,下面是一些常用的限定符:

限定符 描述
* 匹配前面的表达式零次或多次(0 或 多)
+ 匹配前面的表达式一次或多次(1 或 多)
? 匹配前面的表达式零次或一次(0 或 1)
{n} 匹配前面的表达式 n 次
{n,} 匹配前面的表达式至少 n 次
{n,m} 匹配前面的表达式 n 到 m 次

分组与引用

括号可以用来进行分组,在分组中可以使用 | 进行或运算,同时在正则中还可以使用反斜杠加数字表示反向引用,即使用第几个括号中的内容。

下面是一个简单的例子:

var reg = /^(html|css|javascript)+语言$/;
var str1 = "html语言";
var str2 = "JavaScript语言";
var str3 = "C语言";
console.log(reg.test(str1)); // true
console.log(reg.test(str2)); // true
console.log(reg.test(str3)); // false

以上代码中我们使用了分组和或运算来匹配字符串结尾的“语言”两个字,其中的括号就是用来进行分组的。

正则表达式方法

在 JavaScript 中,RegExp 对象提供了一些常用的正则表达式方法:

  1. test():判断字符串是否符合正则表达式,返回 true/false。
var reg = /\d+/;
console.log(reg.test("123")); // true
console.log(reg.test("abc")); // false
  1. exec():查找字符串中符合正则表达式的字符,返回一个包含查找结果的数组(如果没有找到则返回 null)。
var reg = /\d+/;
console.log(reg.exec("123 456")); // ["123"]
console.log(reg.exec("abc")); // null

示例一:验证电子邮箱格式

我们可以使用正则表达式来验证字符串的格式是否符合电子邮箱的格式:

var reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
var email1 = "example@test.com";
var email2 = "example@test.cn";
var email3 = "abc";
console.log(reg.test(email1)); // true
console.log(reg.test(email2)); // true
console.log(reg.test(email3)); // false

以上代码中我们使用了一些元字符和限定符来构建一个匹配电子邮箱的正则表达式。

示例二:使用正则表达式匹配 url 参数

我们可以使用正则表达式来匹配 url 中的参数:

var url = "http://www.example.com?name=husky&age=18";
var reg = /\b(\w+)\b=(\w+)/g;
var result;
while((result = reg.exec(url)) !== null) {
  // result[0]是匹配到的全部字符串,result[1]是第一个括号匹配到的字符串,result[2]是第二个括号匹配到的字符串
  console.log(result[1] + ": " + result[2]);
}

// 输出:
// name: husky
// age: 18

以上代码中我们使用了 \b(单词边界)和 g(全局匹配)选项来匹配 url 中的参数,使用 exec() 方法找到所有匹配的结果并打印输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript之正则表达式基础知识小结 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java 8 Stream 处理数据方法汇总

    Java 8 Stream 处理数据方法汇总 什么是 Java 8 Stream Java 8 Stream 是在 JDK 8 中引入的一个新的 API,它提供了一种更为优雅和高效的处理集合类数据的方法。 Stream 提供了一种流式处理数据的方式,它可以实现类似于 SQL 的聚合操作,如过滤、映射、分组和归约等操作。与传统的集合框架相比,Stream 代码…

    Java 2023年5月26日
    00
  • python em算法的实现

    Python EM算法的实现 EM算法(Expectation-Maximization algorithm)是一种迭代求解极大似然估计或极大后验概率估计的算法,常用于含有隐变量的概率模型参数的最大似然估计或极大后验概率估计。它是一种迭代算法,每次迭代分两步:期望步骤和最大化步骤。期望步骤求期望得到后验概率分布,最大化步骤求能最大化期望似然函数的模型参数,然…

    Java 2023年5月19日
    00
  • 学习Java之如何正确地跳出循环结构

    学习Java,循环结构是非常重要的知识点。而在使用循环的过程中,我们有时候需要跳出循环,以停止或跳过一些迭代,这时候就需要使用跳出循环的语句。本文将详细讲解如何正确地跳出循环结构。 标准循环结构 Java 中常见的循环结构包括 for、while 和 do-while 循环结构。它们的语法分别为: for (初始化; 布尔表达式; 更新) { // 代码块 …

    Java 2023年5月26日
    00
  • JavaSpringBoot报错“TransactionException”的原因和处理方法

    原因 “TransactionException” 错误通常是以下原因引起的: 数据库事务问题:如果您的数据库事务存在问题,则可能会出现此错误。在这种情况下,需要检查您的数据库事务并确保它们正确。 事务管理器问题:如果您的事务管理器存在问题,则可能会出现此错误。在这种情况下,需要检查您的事务管理器并确保它们正确。 并发问题:如果您的应用程序存在并发问题,则可…

    Java 2023年5月4日
    00
  • Mybatis实现动态SQL编写的示例详解

    下面是针对“Mybatis实现动态SQL编写的示例详解”的完整攻略。 什么是动态SQL 动态SQL是一种可以根据条件生成不同SQL语句的技术,它可以在SQL运行时决定具体的SQL语句。Mybatis是一种支持动态SQL的持久层框架,可以通过动态SQL来实现不同场景下的复杂SQL语句。 Mybatis实现动态SQL的方式 Mybatis实现动态SQL主要有以下…

    Java 2023年5月19日
    00
  • JVM知识总结之垃圾收集算法

    JVM知识总结之垃圾收集算法 什么是垃圾收集算法 垃圾收集算法(Garbage Collection Algorithm)是指垃圾收集器(Garbage Collector,GC)在执行“垃圾收集”操作时,所采用的具体算法。垃圾收集器的作用是自动释放内存中不再被使用的对象。 常见的垃圾收集算法 1. 标记-清除算法(Mark-Sweep) 标记-清除算法(M…

    Java 2023年5月26日
    00
  • JdbcTemplate方法介绍与增删改查操作实现

    JdbcTemplate是Spring框架中用于简化JDBC操作的核心类,它提供了一些便捷的方法,使得我们编写JDBC代码更加方便,也提高了代码的可读性和可维护性。在下面的攻略中,我将详细讲解JdbcTemplate的方法介绍和增删改查操作实现。 一、JdbcTemplate方法介绍 1.1 构造方法 JdbcTemplate提供了多个构造方法,其中一个常用…

    Java 2023年6月16日
    00
  • Java IO流 File类的常用API实例

    Java IO流 File类的常用API实例攻略 1. 什么是Java IO流 File类? Java IO流是Java核心API中的一部分,它提供了一种在Java应用程序中进行输入和输出操作的方式。File类是Java IO流中的重要类,它用于封装文件或目录的访问操作,提供了一系列对于文件或目录进行操作的方法。 2. File类的常用方法 2.1 File…

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