【正则表达式】

本文介绍了正则表达式的概念、各种元字符和量词的用法,以及test(),exec(),match(),search(),replace()等方法的应用示例,展示了如何在实际场景中检测敏感词、验证手机号和邮箱格式等。
摘要由CSDN通过智能技术生成

 正则表达式

正则表达式是一种用于描述、匹配和操作字符串的模式,提供了一种强大而灵活的方式来搜索、替换和验证字符串。

边界符

^ : 表示匹配行首的文本(以谁开始)

$ : 表示匹配行尾的文本(以谁结束)

量词符:量词符用来设定某个模式出现的次数。

* :重复0次或更多次

+ :重复1次或更多次

? :重复0次或1次

{n} : 重复n次

{n,} :重复n次或更多次

{n,m} :重复n到m次

预定义类

\d :匹配0-9之间的任一数字,相当于[0-9]

\D :匹配所有0-9以外的字符,相当于[^0-9]

\w :匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]

\W :除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]

\s :匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f]

\S :匹配非空格的字符,相当于[^\t\r\n\v\f]

括号总结

大括号 量词符,里面表示重复次数

中括号 字符集合,匹配方括号中的任意字符.

小括号 表示优先级

修饰符

改变匹配模式的行为的特殊标记

  • g(全局修饰符):在整个字符串中查找所有匹配项,而不仅仅是第一个匹配项
  • i(忽略大小写修饰符):在匹配时忽略大小写

test() 方法:

用于测试字符串是否与正则表达式匹配,并返回布尔值

const pattern = /hello/;
const str = 'Hello, how are you?';

console.log(pattern.test(str)); // 输出: true

exec() 方法:

用于在字符串中执行正则表达式模式的搜索,并返回第一个匹配结果的详细信息

const pattern = /hello/;
const str = 'Hello, how are you?';

console.log(pattern.exec(str)); // 输出: ["hello", index: 7, input: "Hello, how are you?", groups: undefined]

match() 方法:

用于在字符串中执行正则表达式模式的搜索,并返回所有匹配结果组成的数组

const pattern = /hello/g;
const str = 'Hello, how are you? hello there';

console.log(str.match(pattern)); // 输出: ["hello", "hello"]

search() 方法:

用于在字符串中搜索与正则表达式匹配的位置,并返回第一个匹配的索引值

const pattern = /hello/;
const str = 'Hello, how are you?';

console.log(str.search(pattern)); // 输出: 7

replace() 方法:

用于将正则表达式匹配的部分替换为指定的字符串

const pattern = /hello/;
const str = 'Hello, how are you? hello there';

console.log(str.replace(pattern, 'Hi')); // 输出: "Hello, how are you? Hi there"

实例:

查找字符串中所有敏感词的内容和位置


    var str = "小明:我滴是日本人。小校:我是美国人。小台:我是泰国人"
    //\u4e00-\u9fa5 是 Unicode 范围,表示包含所有的中文字符
    //第一次用于获取第一个匹配项,第二次用于遍历所有匹配项
    var reg = /国[\u4e00-\u9fa5]/;
    var arr = reg.exec(str);
    var reg = /国[\u4e00-\u9fa5]/g;
    do{
        var arr = reg.exec(str);
        console.log(arr);
        if(arr != null){
            console.log(`在${arr.index}位置,找到敏感词${arr[0]}`);
        }
    }while(arr != null);
//在16位置,找到敏感词国人
//在25位置,找到敏感词国人

 检查给定字符是否为手机号码格式,只检查格式,不保证手机号一定有效


function isPhoneNumber(input) {
  var reg = /^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;
  return reg.test(input);
}

检查给定字符串是否为合法电子邮箱地址格式


function isPhoneNumber(input) {
  var reg = /^\w+@(\w+\.)+\w+$/;
  return reg.test(input);
}

身份证号(15位、18位数字)

^\d{15}|\d{18}$

密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)

^[a-zA-Z]\w{5,17}$

强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

匹配长度为5~20的字符串,必须字母开头并且可带字母、数字、‘_’、’.‘的字符串


'^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$'

匹配长度为6~20的字符串,可以包含字母数字下划线


'^(\w){6,20}$'

检查给定字符串是否只包含英文字母大小写


'^[a-zA-Z]+$'

正则表达式在线测试、生成、解析工具

Regex正则表达式在线测试、生成、解析工具 - GoRegex.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自湖南的阿晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值