正则表达式基本语法及表单验证操作详解【基于JS】

yizhihongxing

正则表达式基本语法及表单验证操作详解 [基于JS]

什么是正则表达式

正则表达式(Regular Expression),又称规则表达式、常规表示式、正规表示法、正则表示法,简称正则表达式,在计算机科学中,是用来描述、匹配一系列符合某个规则的字符串的表达式。常用于搜索、替换或验证文本。

正则表达式的基本语法

字符类

  • [abc] 匹配a、b或c
  • [^abc] 除a、b、c外均可匹配
  • [a-zA-Z0-9] 匹配所有字母和数字
  • [^a-zA-Z0-9] 匹配所有非字母和数字

字符集合

  • . 匹配任意字符
  • \d 匹配数字,等价于[0-9]
  • \D 匹配非数字,等价于[^0-9]
  • \w 匹配单词字符,等价于[a-zA-Z0-9]
  • \W 匹配非单词字符,等价于[^a-zA-Z0-9]
  • \s 匹配空白字符,包括空格、制表符、换行符等
  • \S 匹配非空白字符

数量词

  • a? 匹配0个或1个a
  • a* 匹配0个或多个a
  • a+ 匹配1个或多个a
  • a{n} 匹配n个a
  • a{n,} 匹配至少n个a
  • a{n,m} 匹配n至m个a

边界匹配

  • ^ 匹配行的起始位置
  • $ 匹配行的结束位置
  • \b 匹配单词边界
  • \B 匹配非单词边界

分组和引用

  • (expr) 匹配expr,并捕获匹配的子串到缓冲区中
  • (?:expr) 匹配expr,但不捕获匹配的子串
  • (?=expr) 匹配expr前面的位置
  • (?<=expr) 匹配expr后面的位置

正则表达式的使用

创建正则表达式对象

通过在JavaScript中使用RegExp对象创建正则表达式,语法如下:

var regex = new RegExp(pattern, flags);

其中,pattern表示正则表达式的模式,可以是字符串,也可以是RegExp对象,flags表示正则表达式的匹配规则,如:

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

示例:

// 匹配所有数字
var regex = new RegExp(/\d/g);

// 忽略大小写匹配字符串
var regex = new RegExp('hello', 'i');

正则表达式的方法

RegExp对象提供了一些方法,用于对字符串进行模式匹配:

  • test(str):判断字符串str是否匹配正则表达式,返回Boolean值
  • exec(str):在字符串str中搜索匹配正则表达式的第一个子串,返回一个数组对象,包含匹配的子串、捕获组、匹配位置等信息。如果没有匹配项,返回null。

示例:

// 判断手机号码是否符合规范
var regex = new RegExp(/^1[34578]\d{9}$/);
var phoneNumber = '13912345678';
if (regex.test(phoneNumber)) {
    console.log('手机号码正确');
} else {
    console.log('手机号码错误');
}

// 提取URL中的协议
var regex = new RegExp(/^(\w+):\/\//);
var url = 'http://www.example.com/index.html';
var matches = regex.exec(url);
console.log(matches[1]); // 'http'

正则表达式的用途

表单验证

正则表达式可以用来验证表单数据的输入是否符合规范,例如:

// 验证电子邮件地址
var regex = new RegExp(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/);
var email = 'john@example.com';
if (!regex.test(email)) {
    console.log('邮件地址错误');
}

// 验证身份证号码
var regex = new RegExp(/^\d{6}(18|19|2\d)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[0-1])\d{3}[\dX]$/);
var idCard = '310101199001011234';
if (!regex.test(idCard)) {
    console.log('身份证号码错误');
}

字符串操作

正则表达式可以用来搜索、替换字符串中的子串,例如:

// 将空格替换为逗号
var regex = new RegExp(/\s+/);
var text = 'This is a sample text.';
var result = text.replace(regex, ',');
console.log(result); // 'This,is,a,sample,text.'

// 判断字符串是否以数字开头
var regex = new RegExp(/^\d/);
var text = '123abc';
if (regex.test(text)) {
    console.log('字符串以数字开头');
} else {
    console.log('字符串不以数字开头');
}

总结

正则表达式是一种十分强大的工具,可以用来描述、搜索、替换符合某种规则的文本。在JavaScript中使用RegExp对象创建正则表达式,并使用其方法对字符串进行匹配。在实际应用中,正则表达式常用于表单验证、字符串操作、文本解析等方面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:正则表达式基本语法及表单验证操作详解【基于JS】 - Python技术站

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

相关文章

  • 如何使用PHP实现javascript的escape和unescape函数

    要在PHP中实现JavaScript的escape和unescape函数,我们可以使用PHP的内置函数urlencode和urldecode。 1.使用urlencode(类似于escape函数)进行编码 urlencode函数将字符串编码为类似于escape函数的格式。它将所有非字母数字字符(除了-_.)都替换为百分比加上其十六进制值的编码。 以下是使用u…

    JavaScript 2023年5月19日
    00
  • 使用ajax实现无刷新改变页面内容和地址栏URL

    当我们的网站需要异步加载数据时,我们就需要使用Ajax技术来实现无刷新改变页面内容和地址栏URL。下面是实现的攻略: 步骤一:创建HTML文件 在HTML文件中,我们需要添加一个按钮和用来显示Ajax返回结果的div容器,如下所示: <!DOCTYPE html> <html lang="en"> <head…

    JavaScript 2023年6月11日
    00
  • js每隔两秒输出数组中的一项(实例)

    下面是讲解“js每隔两秒输出数组中的一项”的完整攻略,具体步骤如下: 1. 准备工作 在开始实现之前,我们需要明确几个问题: 哪个数组需要输出? 如何输出数组中的一项? 如何达到每隔两秒输出一项的效果? 针对以上问题,我们可以做如下解答: 这里假设我们要输出的数组是一个长度为n的一维数组 输出数组中的一项可以使用数组索引,即array[index]的形式来实…

    JavaScript 2023年5月27日
    00
  • javascript RegExp对象(正则表达式)

    JavaScript中的RegExp对象提供了在字符串中进行正则表达式匹配的能力。它通常用于处理字符串中的模式匹配,如验证、搜索或替换特定模式,是JavaScript中必不可少的一个功能。 RegExp对象的基本概述 创建RegExp对象 使用RegExp对象,最简单的方法是通过一个字符串的值来创建,将其作为参数传递给RegExp的构造函数: var pat…

    JavaScript 2023年6月10日
    00
  • 通过JS动态创建一个html DOM元素并显示

    创建一个HTML DOM元素是非常方便的,Javascript提供了多种方法来实现这个目标。 一、使用document.createElement() 可以使用document.createElement()方法来创建任何HTML元素。例如,要创建一个<div>元素,您可以使用以下代码: // 创建一个 div 元素 const divEleme…

    JavaScript 2023年6月10日
    00
  • jQuery 快速结束当前正在执行的动画

    jQuery 提供了 stop() 方法用于快速结束当前正在执行的动画,其语法为: $(selector).stop(stopAll, goToEnd); 其中 stopAll 参数用于控制是否停止正在队列中等待执行的动画,默认为 false,即仅结束当前正在执行的动画。goToEnd 参数用于控制是否立即完成动画至结尾状态,默认为 false,即立即结束。…

    JavaScript 2023年6月11日
    00
  • JavaScript组合拼接字符串的效率对比测试

    这里是“JavaScript组合拼接字符串的效率对比测试”的完整攻略。 前言 在实际前端项目中,字符串拼接是很常见的操作。比如说,在渲染页面的时候,需要将一些字符串拼接后放到标签属性里;或者需要将字符串作为参数传递给后端接口。有经验的前端工程师都知道,正确使用字符串拼接可以使得程序运行更快。因此,在本文中,我们将会比较常用的几种字符串拼接方法,以了解它们的效…

    JavaScript 2023年5月28日
    00
  • JavaScript实现二叉树的先序、中序及后序遍历方法详解

    JavaScript实现二叉树的先序、中序及后序遍历方法详解 一、二叉树的定义 二叉树是一个每个节点最多有两个子树的树结构,通常分为左子树、右子树。二叉树有多种遍历方式,包括先序遍历、中序遍历和后序遍历。 其中, 先序遍历:按照“根结点-左子树-右子树”的方式遍历二叉树; 中序遍历:按照“左子树-根结点-右子树”的方式遍历二叉树; 后序遍历:按照“左子树-右…

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