javascript正则表达式RegExp入门图文教程

yizhihongxing

下面是关于“javascript正则表达式RegExp入门图文教程”的完整攻略。

一、什么是正则表达式?

正则表达式(regular expression),又称正规表示式、正规表示法、规则表示法、常规表示法(英语:Regular Expression,缩写:regex、regexp),是计算机科学的一个概念。正则表达式是一种用来匹配字符串的强有力的武器。对于很多初学者来说,正则表达式的语法十分晦涩难懂,但是一旦掌握了它,它可以让我们在文本处理等方面变得高效和灵活。

二、什么是RegExp对象?

在JavaScript中,正则表达式由RegExp对象表示。RegExp对象正如其名:它是一个描述字符串如何匹配某个模式的对象(pattern)。当使用RegExp对象表示正则表达式时,可以使用正则表达式描述字符串中的文本模式,然后使用这个模式可对一个字符串进行匹配、筛选、替换和分割。下面是RegExp对象的一些常见属性和方法。

2.1 RegExp对象的属性

RegExp对象常见的属性包括:

  • RegExp.prototype.global 是否使用全局搜索
  • RegExp.prototype.ignoreCase 忽略大小写
  • RegExp.prototype.multiline 是否使用多行模式
  • RegExp.prototype.source 正则表达式源文本字符串

2.2 RegExp对象的方法

RegExp对象常见的方法包括:

  • RegExp.prototype.exec() 用于在字符串中查找匹配的文本。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回null;
  • RegExp.prototype.test() 用于检测一个字符串是否匹配某个正则表达式。返回值为true或false;
  • String.prototype.match() 返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回null;
  • String.prototype.search() 用于查找字符串中的指定子字符串,或查找与正则表达式相匹配的子字符串。返回第一个匹配的子串的起始位置,如果未找到,则返回-1;
  • String.prototype.replace() 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回用替换字符替换了匹配子串后的结果新字符串;
  • String.prototype.split() 将一个字符串分割成字符串数组。

三、正则表达式的语法

正则表达式里的特殊字符不仅包含了一些特殊的字符,还包括某些字符的组合、上下文环境、不同的Unicode字符等等。接下来,我们将一步步介绍正则表达式的基本语法。

3.1 字符类

字符类是用来表示一组字符中的一个的特殊符号。比如,[abc]表示匹配字符"a"、"b"或者"c",[^abc]表示匹配任何不在括号中的字符。

以下是字符类的一些常见语法:

语法 描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定的字符集内的任何字符。
[^adgk] 查找给定字符集外的任何字符。
(red|blue|green) 查找任何指定的选项

3.2 元字符

元字符是正则表达式的基础,它们为正则表达式提供了其强大的功能。元字符是在正则表达式里有特殊含义的非字母字符。以下是一些常见的元字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单个字符,包括数字、字母和下划线。
\W 查找任何非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符,包括空格、制表符、换行符等。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\n 查找换行符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。

3.3 重复字符

重复字符允许我们重复匹配在它之前出现的元素,例如,"a{1,3}"将匹配字符"a"、"aa"和"aaa"。以下是一些常见的重复字符:

语法 描述
n+ 匹配任何至少包含一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{x} 匹配包含 x 个 n 的序列的字符串。
n{x,y} 匹配包含 x 个或 y 个 n 的序列的字符串。
n{x,} 匹配包含至少 x 个 n 的序列的字符串。
n{0,} 等同于 n*。
n{1,} 等同于 n+。

四、RegExp对象的使用

我们以一个简单的例子来说明如何使用RegExp对象:

var str = "Hello world! This is a test string for regexp.";
var patt = /world/i; // i表示不区分大小写
var result = patt.test(str); // 匹配则返回true,否则返回false
console.log(result);

输出结果为:true。

下面再举一个稍微复杂一点的例子。假设有一个表单,用户需要输入邮箱地址和手机号码。当用户输入完邮箱和手机号码后,我们需要判断这两个输入框中的内容是否符合规定,如果不符合规定,就提示用户修改输入。

// 获取表单中的输入框元素
var emailInput = document.getElementById("email");
var phoneInput = document.getElementById("phone");

// 为输入框添加blur事件监听器
emailInput.addEventListener("blur", function() {
  var email = emailInput.value;
  var patt = /^\w+@[a-zA-Z0-9]+\.[a-zA-Z]{2,}$/; // 匹配邮箱地址的正则表达式
  if (!patt.test(email)) { // 如果不匹配
    alert("请输入正确格式的邮箱地址!");
    emailInput.value = ""; // 清空输入框
  }
});

phoneInput.addEventListener("blur", function() {
  var phone = phoneInput.value;
  var patt = /^1[3-9]\d{9}$/; // 匹配手机号码的正则表达式
  if (!patt.test(phone)) { // 如果不匹配
    alert("请输入正确格式的手机号码!");
    phoneInput.value = ""; // 清空输入框
  }
});

在以上代码中,我们通过RegExp对象来创建了两个正则表达式,一个用于匹配邮箱地址,一个用于匹配手机号码。当用户输入完邮箱和手机号码后,我们使用test()方法来判断输入是否符合规定,如果不符合,则弹出提示框并清空输入框。

至此,我们介绍了RegExp对象和正则表达式的一些基本知识,并用代码示例演示了如何使用RegExp对象来匹配字符串。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript正则表达式RegExp入门图文教程 - Python技术站

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

相关文章

  • Javascript作用域和作用域链原理解析

    Javascript作用域和作用域链是Javascript中重要的概念,理解它们可以帮助我们更好地编写代码和处理变量与函数之间的关系。 什么是Javascript作用域 Javascript作用域是指变量和函数的可访问范围。在Javascript中,有三种作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 全局作用域中定义的变量和函数可以在整个应用程…

    JavaScript 2023年6月10日
    00
  • NodeJS有难度的面试题(能答对几个)

    下面我会详细讲解一下 “NodeJS有难度的面试题(能答对几个)” 的完整攻略。 1. Node.js的基础知识 在面试过程中,面试官通常会问到一些基础的 Node.js 知识,例如: Node.js 是什么? npm 是什么? 有什么用? 如何在 Node.js 中使用第三方模块? 什么是模块? 如何定义并导入模块? 针对这些问题,你需要先通过自学文档以及…

    JavaScript 2023年5月28日
    00
  • JavaScript中的变量声明你知道吗

    当我们使用JavaScript编写程序时,变量是最常用的数据类型之一。在开始编写任何JavaScript程序之前,都需要了解变量的声明和使用方式,以确保代码的正确性和可读性。 变量声明 在JavaScript中,有三种声明变量的方式:使用var、let和const关键字。其中,var和let可以用来声明可变变量,而const用来声明常量。 使用var声明变量…

    JavaScript 2023年5月18日
    00
  • 10种JavaScript最常见的错误(小结)

    当开发JavaScript代码时,因为语言本身的特性和自己开发经验的缺乏,我们可能会遇到一些常见的错误。以下是10种JavaScript最常见的错误的完整攻略: 1.类型错误(TypeError) 当我们尝试将一个值应用于一个不允许该值的操作时,就会发生类型错误。比如: var string = ‘hello’; string(); // TypeError…

    JavaScript 2023年5月18日
    00
  • javascript Canvas动态粒子连线

    下面是关于“javascript Canvas动态粒子连线”的完整攻略。 什么是Canvas动态粒子连线? Canvas动态粒子连线是一种使用canvas绘图技术实现的特效,它通过创建多个粒子,并且使多个粒子之间产生连线,形成各种炫酷的效果,比如烟花绽放、星空闪烁等。这种效果可以通过JavaScript代码实现,而且应用广泛,被用于各种类型的网页和应用程序中…

    JavaScript 2023年6月10日
    00
  • JS的replace方法

    JS的replace方法是一种可以在字符串中搜索指定内容并替换的方法。下面详细讲解它的使用方法和一些示例说明,以便你更好地理解和应用它。 replace方法的语法 JS中replace方法的语法如下: str.replace(searchValue, replaceValue) 该方法接受两个参数,分别是所要匹配的字符串和替换为的字符串。 参数解释 sear…

    JavaScript 2023年6月10日
    00
  • 分享一个自己写的table表格排序js插件(高效简洁)

    以下是“分享一个自己写的table表格排序js插件(高效简洁)”的完整攻略。 简介 这个table表格排序js插件是基于原生JS编写的,能够高效、简洁地为网页中的table表格添加排序功能。插件使用方便,只需要在HTML中添加相应的class和data-属性即可,不需要引入其他框架或库。 使用方法 引入插件 首先,需要在HTML中引入插件的JS文件: &lt…

    JavaScript 2023年6月10日
    00
  • 关于javascript的“静态类”

    关于javascript的静态类,其实指的就是使用静态方法来实现类似于其他面向对象语言中静态类的概念。在javascript中,我们无法直接定义静态类,但是可以通过静态方法的形式来实现类似的效果。 1. 使用ES6中的静态方法 ES6中引入了class的概念,我们可以通过class来定义一个类,并在类中定义静态方法,从而实现静态类的效果。具体的代码示例如下:…

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