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

yizhihongxing

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线程通信之wait-notify通信方式详解

    针对题目“Java线程通信之wait-notify通信方式详解”的完整攻略,以下是详细讲解。 标题 在文章中,应该清晰地使用标题来分隔内容,以便读者可以快速浏览和导航整篇文章。 介绍 在这个部分,我们将简要介绍Java中的线程通信和wait-notify通信方式。线程通信是指多个线程之间的协作和通信,为了互相通信和协调,线程需要一些机制,而wait-noti…

    Java 2023年5月19日
    00
  • Java运行时动态生成对象的方法小结

    下面是详细的Java运行时动态生成对象的方法攻略。 1. 简介 在Java中,动态生成对象可以使用Class类的newInstance方法实现。新的创建对象方式是在运行时实现的,因此被称为Java运行时动态生成对象。使用这种方式可以避免在编译时给出类名的麻烦,只需要在运行时确定需要实例化的类名即可。 2. 方法使用 Class类是Java中所有类的超类,它通…

    Java 2023年5月26日
    00
  • java.util.NoSuchElementException原因及两种解决方法

    当使用Scanner类从标准输入或文件读取数据时,可能会遇到java.util.NoSuchElementException异常。这个异常被抛出,当Scanner使用next()、nextInt()或nextLine()方法时,输入流中没有更多的输入时抛出。这个异常可能由以下原因引起: Scanner对象没有被正确地初始化或已关闭。如果Scanner对象已经…

    Java 2023年5月20日
    00
  • Spring Security整合Oauth2实现流程详解

    Spring Security整合Oauth2实现流程详解 前言 在Web开发过程中,安全始终是一个重要的话题。为了保护我们的应用程序免受黑客、欺诈和恶意攻击,我们需要使用安全框架来保护它。在这方面,Spring Security是一个强大的框架,提供了多种身份认证和授权方式。在此基础上,我们还可以使用Oauth2协议来进行安全访问控制。 本文将介绍如何使用…

    Java 2023年5月20日
    00
  • 浅析java中 Spring MVC 拦截器作用及其实现

    下面是详细讲解“浅析Java中Spring MVC拦截器作用及其实现”的攻略。 1. 什么是拦截器 在Spring MVC中,拦截器指的是在请求到达控制器前或者控制器返回响应前,对请求或响应进行拦截并进行处理的一种机制。拦截器的实现需要实现Spring MVC提供的拦截器接口HandlerInterceptor。 2. 拦截器的作用 拦截器的主要作用有: 验…

    Java 2023年5月16日
    00
  • 两种JAVA实现短网址服务算法

    下面是关于两种JAVA实现短网址服务算法的完整攻略。 一、算法介绍 在实现短网址服务时,通常需要将长URL转换为短字符串来实现,这时需要用到哈希算法。 解决方案一:MD5 MD5是一种广泛使用的哈希算法,它可以将任意长度的消息压缩为一个128位的哈希值。MD5哈希算法不可逆,因此可以很好地用来实现短网址服务。在此方案中,我们需要实现以下步骤: 获取长URL;…

    Java 2023年5月19日
    00
  • Java中Servlet的生命周期详解

    让我给你详细讲解一下 “Java中Servlet的生命周期详解”的完整攻略。 什么是Servlet生命周期 Servlet生命周期指的是Servlet从创建到销毁的整个过程,包括初始化、服务和销毁三个过程。 Servlet生命周期的三个阶段 初始化阶段 在初始化阶段,Servlet容器创建Servlet实例,并调用init()方法初始化Servlet。在这个…

    Java 2023年6月2日
    00
  • 微信小程序 ES6Promise.all批量上传文件实现代码

    让我来详细讲解一下“微信小程序 ES6Promise.all批量上传文件实现代码”的攻略过程。 先了解一下Promise.all 在了解如何使用ES6中的Promise.all实现批量上传文件之前,我们先来了解一下Promise.all的相关知识。 Promise.all是一个非常强大的方法,它可以将多个Promise实例包装成一个新的Promise实例。当…

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