Js:正则表达式(一)

1、字面量创建正则表达式

语法: /a/

javascript 复制代码
let hd = "houdunren";
/a/.test(hd); // true

2、使用对象创建正则表达式

语法: let reg = new RegExp("xxx");

javascript 复制代码
let hd = "houdunren";
let reg = new RegExp("a", "g");
reg.test(hd); // true

3、选择符的使用

语法: /a|b/

javascript 复制代码
let language = "cn";
/en|cn/.test(language); // true

4、原子表与原子组中的选择符

定义:

原子表:在一组字符中匹配某个元字符,在正则表达式中通过元字符表来完成,就是放到\[\]中,并且原子表中部分字符不需要转义(例如:小数点.)

原子组:没有添加g修正符时只匹配到第一个,匹配到的信息包含0-匹配到的完整内容,1,2...-匹配到的原子组,index-元字符串中的位置,input-原字符串,groups-命名分组,在match中使用原子组匹配,会将每个组数据返回到结果中

语法: 原子表\[\]、原子组()

javascript 复制代码
console.log(/[12345]/.test("12")); // true
console.log(/(12|34)/.test("1324")); // false


// 原子表的基本使用
let date = "2022-09-03";
reg = /^\d{4}([-\/])\d{2}\1\d{2}$/;
console.log(date.match(reg)[0]); //2022-09-03
console.log("2022-12/08".match(reg)); //null
console.log("2022/12/08".match(reg)); // [ '2022/12/08', '/', index: 0, input: '2022/12/08', groups: undefined ]
javascript 复制代码
 <!-- 邮箱验证原子组的使用 -->
<input type="text" name="mail">
<span></span>
<script>
    let mail = document.querySelector("[name=mail]").addEventListener("keyup", function () {
        let reg = /^[\w-]+@([\w-]+\.)+(com|org|cc|cn|net)$/i;
        document.querySelector("span").innerHTML = reg.test(this.value) ? "success" : "failed";
    });
</script>

5、转义的理解

原因: 有些字符在正则语法中有不同的含义,例如 点(.)第一个含义是除换行符外任何字符,第二个含义才是普通点,这时需要第二个点含义就需要转义(\.)

语法: \. \d

6、字符边界约束

语法:^-开始边界 $-结束边界

javascript 复制代码
let flag = "qwasas".match(/^[a-z]{3,6}$/); // true

7、数值与空白字符

语法: 数值-\d 匹配多个数组(贪婪)-\d+ 空白字符(包括换行符\n)-\s

反向匹配: 非数值-\D 非空白字符-\S

javascript 复制代码
//数值匹配
console.log(/\d/.test("12asa34asa")); // true
console.log(/\d/.test("abc")); // false
// 多数值匹配
console.log(/\d+/.test(1234)); // true
console.log(/\d+/.test(1234.45)); // true
// 空白字符匹配
console.log(/\s/.test("asa")); // false
console.log(/\s/.test(" asa")); // true
console.log(/\s/.test("\nasa")); // true
// 非数值匹配
console.log(/\D/.test(1234)); // false
console.log(/\D/.test("abc1234")); // true
// 非空字符匹配
console.log(/\S/.test("asa")); // true
console.log(" asa".match(/\S/g)); // [ 'a', 's', 'a' ]

8、w与W元字符

定义: \w-数值+字母+下划线 \W-非数值非字母非下划线

javascript 复制代码
//['d', 'o', 'u', 'd', 'u','n', 'r', 'e', '1', '2','2', '1', '2', '1', '1','w', 's', 'a', '_']
console.log("doudunre1`22121@1wsa_*&*^".match(/\w/g));
console.log("doudunre1`22121@1wsa_*&*^".match(/\W+/g)); // [ '`', '@', '*&*^' ]
相关推荐
2501_944521591 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理1 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
Ken_11153 小时前
小体积附件下载正常,大附件下载异常
javascript
wangchunyu1143 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
变与不变8063 小时前
jQuery怎么使用
前端·javascript
paopaokaka_luck4 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
仰望.4 小时前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
程序 代码狂人4 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
meiying88385 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
程序员初一6 小时前
我把跑了两年 WordPress 的机器重装了一遍,顺便把面板卸了
javascript