首页 > 编程语言 >正则表达式在JavaScript的使用

正则表达式在JavaScript的使用

时间:2023-08-03 20:55:21浏览次数:56  
标签:console log 正则表达式 JavaScript let str 使用 字符串 reg

正则表达式

  • 引入:邮件格式的匹配

介绍

  • 检查字符串是否符合某些规则

使用规则

  • 基本语法:
    • 构造函数方式: let 变量 = new RegExp("正则表达式","匹配模式")(更灵活)
    • 字面量方式:let 变量 = /正则表达式/匹配模式(更方便)
  • 匹配模式(可以有多个,且顺序无所谓):
    • i 忽略大小写
    • g 全局匹配模式
//检查一个字符串是否含有a,区分大小写  
let reg = new RegExp("a","i");  
reg = /a/i;
  
let str = "134u8132a";  
//test()方法可以检查一个字符串是否符合正则表达式的规则  
let res = reg.test(str);  
console.log(res);//true

常用正则表达式

  • 常用正则表达式
    • a 检查一个字符串是否含有a
    • a|b[ab] 检查一个字符串是否含有a或b,其中|[]均可表示"或"
    • [a-z]检查一个字符串是否含有任意小写字母,其中-表示"到"
    • [A-z]检查一个字符串是否含有任意字母,也可用/[a-z]/i/
    • [0-9]检查一个字符串是否含有任意数字
    • a[abc]c检查一个字符串是否含有以a开头,c结尾,中间为b/c/d的块
    • [^ab] 检查一个字符串是否含有除ab外的字符,其中[^]表示"除了"
//检查一个字符串是否含有a,区分大小写  
let reg = new RegExp("a","i");  
  
let str = "134u8132a,";  
// 检查一个字符串是否含有a或b  
let reg2 = /a|b/;  
console.log(reg2.test(str));//true  
// 检查一个字符串是否含有任意小写字母  
let reg3 = /[a-z]/;  
console.log(reg3.test(str));//true  
// 检查一个字符串是否含有任意字母  
let reg4 = /[a-z]/i;  
console.log(reg4.test(str));//true  
let reg5 = /[A-z]/;  
console.log(reg5.test(str));//true  
//检查一个字符串是否以a开头,c结尾,中间为b/c/d  
str = "babc";  
let reg6 = /a[abc]c/;  
console.log(reg6.test(str));//true

字符串和正则相关方法

  • split()
    • 可以将字符串拆分为数组
    • 方法中可以传递正则表达式作为参数
    • 默认全部拆分
let str = "1k2h3n4b53bd4";  
  
//根据字符串拆分  
let result = str.split(/[A-z]/);  
console.log(result);
  • search()
    • 可以搜索字符串是否含有指定内容,如果有,返回第一次出现的索引,没有则返回-1
    • 可以传递正则表达式作为参数
    • 只会查找第一个,设置全局匹配无效
str = "aezdaec";  
result = str.search(/a[aef]c/);  
console.log(result);
  • match()
    • 可以根据正则表达式,将字符串中符合的内容提取,会将匹配到的结果封装到数组
    • 默认情况下,该函数找到一个符合条件的结果就会停止
    • 可以将正则表达式的匹配模式修改为全局匹配,就可以匹配所有符合的结果
//提取所有符合的结果,忽略大小写  
str = "ae3z45da1ec;ff";  
result = str.match(/[a-z]/gi);  
console.log(result);
  • replace()
    • 可以根据正则表达式,将字符串中符合的内容替换
    • 需要两个参数,第一个参数被替换的内容,第二个参数新的内容,第二个参数可以是空串
    • 默认只会替换第一个,要替换所有需要修改正则表达式的匹配模式为全局匹配
str = "11244323ae3z4c;ff";  
result = str.replace(/[a-z]/gi,"@");  
console.log(result);

语法

  • 量词
    • 可以通过量词设置一个内容出现的次数
    • (a){n} 表示a正好出现n次
    • (a){x,y}表示a出现x至y次
    • (a){x,}表示a出现至少出现x次
    • a+ 表示a出现至少一个
    • a*表示a出现零个或多个
    • a?表示a出现零个或一个
    • ^a表示以a开头
    • a$表示以a结尾
    • .表示单个任意字符
//ab正好连续出现5次  
let str = "abababaa";  
let reg = /(ab){5}/;  
console.log(reg.test(str));  
//匹配abbbc  
str = "abbbc";  
reg = /a(b){3}c/;  
console.log(reg.test(str));  
//匹配abc,其中b连续出现1-3次  
reg = /a(b){1,3}c/;  
console.log(reg.test(str));  
//匹配abc,其中b至少连续出现3次  
reg = /a(b){3,}c/;  
console.log(reg.test(str));  
  
// a出现至少一个  
reg = /a+/;  
console.log(reg.test(str));  
// a出现零个或多个  
reg = /a*/;  
console.log(reg.test(str));  
// a出现零个或一个  
reg = /a?/;  
console.log(reg.test(str));  
//以a开头  
reg = /^a/;  
console.log(reg.test(str));  
//以a结尾  
reg = /a$/;  
console.log(reg.test(str));
  • 转义字符
    • 在正则表达式中使用\
    • \.表示".",其他字符类似
    • \w 表示任意字母、数字、下划线__
    • \W表示除了任意字母、数字、下划线__
    • \d表示任意数字
    • \D表示除了任意数字
    • \s表示空格
    • \S表示除了空格
    • \b表示单词边界,例如\bchild\b表示是否含有单独的"child"这个单词
    • \B表示除了单词边界

常用正则表达式

见该博客:常用正则表达式合集,这一篇就够了!!(含完整案例,建议收藏)_冰 河的博客-CSDN博客

练习

1 检查手机号

  • 要求:
    • 检查一个字符串是否为合法的手机号
    • 第一位是1
    • 第二位3-9
    • 三位后任意9个数字

2 去除空格

  • 要求
    • 接收用户输入,去除用户输入中首尾的所有的空格
  • 答案
//接收用户输入  
let str = prompt("请输入用户名:");  
  
//去除字符串中的前后的空格  
// str = str.replace(/\s/g,"");  
//去除开头空格  
str = str.replace(/^\s*/,"");  
console.log(str);  
//去除结尾空格  
str = str.replace(/\s*$/,"");  
console.log(str);  
//去除开头或结尾的空格  
str = str.replace(/^\s* | \s*$/g,"");  
console.log(str);

匹配电子邮箱

  • 要求
    • 任意字母数字下划线@任意字母数字.任意字母(2-5位).任意字母(2-5位)
  • 答案
let emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;

标签:console,log,正则表达式,JavaScript,let,str,使用,字符串,reg
From: https://www.cnblogs.com/flblogs/p/17604428.html

相关文章

  • update-alternatives 使用详解
    alternatives管理方式$ls-l/usr/bin/pythonlrwxrwxrwx1rootroot2411202017/usr/bin/python->/etc/alternatives/python$ls-l/etc/alternatives/pythonlrwxrwxrwx1rootroot1811212017/etc/alternatives/python->/usr/bin/python2.7python这个可执行命......
  • Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型
    最近在golang业务开发时,遇到一个坑。我们有个服务,会接收通用的interface对象,然后去给用户发消息。因此会涉及到把各个业务方传递过来的字符串,转成interface对象。但是因为我的字符串里有一个数字,比如下面demo里的{"number":1234567},而且数字是7位数,在经过json.Unmarshal后,被转成......
  • windows使用bat编写自启动带用户登录数据的浏览器
    windows使用bat编写自启动崭新浏览器本文是为了优化前文selenium&playwright指定浏览器操作,编写了一个bat单独运行。(基于windows)这样使用这个工具的人员可以直接在自己电脑上双击bat后再双击exe就可以直接运行程序,无需配置任何环境。接着前文解决一下报错报错playwright._impl._api......
  • 怎么设置centos限定redis使用的内存
    1、Redis-Cluster集群2、怎么设置centos限定redis使用的内存3、高性能高并发网站架构,教你搭建Redis5缓存集群4、Redis-Cluster5、「实用教程」在配备持久内存的实例上部署Redis应用Redis-Cluster集群1、连接如下https://redis.io/topics/cluster-tutorial以下步骤是在一......
  • filelock-文件锁的使用
    filelock用于文件锁定用于多进程或多线程对同一文件的操作用法:fromfilelockimportFileLocklock=FileLock("file.lock")withlock:#Dosomethingwiththefile说明:1.如果文件不存在,会自动创建2.如果文件已经被锁定,会等待锁定释放后再执行3.如果文件已经被......
  • spring-mvc系列:简介和基本使用
    目录一、简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点二、基本使用1、开发环境2、创建maven工程3、配置web.xml4、创建SpringMVC的配置文件5、创建请求控制器6、创建html页面7、总结一、简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分......
  • 直线导轨使用中常见的问题有哪些?
    直线导轨作为设备的核心部件之一,起着导向和支撑的作用功能。目前,已被广泛应用在各行各业中,大到机械设备,小到抽屉,我们都能看到直线导轨的身影,可以说,直线导轨已经悄无声息的进入到我们的生活了。任何零部件,在使用中都会遇到各种各样的问题,直线导轨也不例外,那么在使用直线导轨时,哪些问......
  • 使用windows访问另一台windows中的vmware虚拟机
    使用windows访问另一台windows中的vmware虚拟机一、场景描述在平常的学习中,当我们的设备较多且都为windows设备时,通常会遇到在一台windows中需要访问另一台windows上的虚拟机,需求如图:二、问题分析首先我们的两台windows之间是可以正常通信的windows与vm是可以正常通信的......
  • 浅谈 rxgo 在项目中的使用方式
    项目中使用到了RxGo,感觉现有的处理方式有一定的优势,当然也有一定的有劣势,遂记录下来,免得自己忘记。本文介绍的只是rxgo的一种方式而已,如果你有不错的使用方式,请不吝赐教,谢谢。对rxgo不清楚的同学可以看看我的另一篇文章,主要是介绍rxgo的基础使用。Go中响应式编程库Rx......
  • 【软件工具安装使用】boost的安装使用和交叉编译
    前言 一、编译安装 二、交叉编译安装注意空格;注意路径; 参考1. BoostC++Libraries;2. ubuntu22.04源码编译安装boost库_奇妙之二进制的博客-CSDN博客;3. Boost1.74.0交叉编译_hrx-@@的博客-CSDN博客;4. BoostGettingStartedonUnixVariants-1.82.0;5. Bo......