首页 > 其他分享 >正则

正则

时间:2023-06-11 22:45:56浏览次数:16  
标签:const log 字母 正则 let test console

正则1

最初学正则的时候一笔带过没有认真学,导致每次想使用正则都是百度搜,最近重新学习了一下正则的语法,记录一下。

修饰符

i 忽略大小写

const reg = /a/i;
let r1 = reg.test("abc");
console.log(r1);    // true

let r2 = reg.test("ABC");
console.log(r2);    // true

g 全局匹配

类似 replaceAll,会匹配整个字符串中所有符合的

const reg2 = /ABC/g;
let r3 = '我ABC你ABC123ABC他ABC/*-'.replace(reg2, "abc");
console.log(r3);    // 我abc你abc123abc他abc/*-

元字符

\b 单词边界符

用来匹配单词(字母)的边界,当待匹配的字母两边不是字母的时候才会匹配。 例如,匹配情况: '    cat    ', '我cat你', '1cat2' 例如,不匹配情况: 'AcatB', 'acatb', ' cata', 'acat '
const reg1 = /\bcat\b/g;
const str1 = 'acatb cat123 cat ';
let s1 = str1.replace(reg1, 'dog');
console.log(s1);    // acatb cat123 dog 

^ $ 字符串边界符

^x 表示整个字符串以x开头
const reg2 = /^a/;
const str2_1 = 'abcdef';
const str2_2 = 'bacdef';
let s2_1 = reg2.test(str2_1);    // true
let s2_2 = reg2.test(str2_2);    // false
x$ 整个字符串以x结尾
const reg3 = /a$/;
const str3_1 = '123caxa';
const str3_2 = '123caax';
const s3_1 = reg3.test(str3_1);    // true
const s3_2 = reg3.test(str3_2);    // false
^x$ 表示精确匹配,必须整个字符串都是才可以
const reg4 = /^abcd$/;
const str4_1 = 'abcd';
const str4_2 = 'abcdXXabcd';
const s4_1 = reg4.test(str4_1);    // true
const s4_2 = reg4.test(str4_2);    // false

量词

* 表示0次或更多次 + 表示1次或更多次 ? 表示0次或1次 {x} 表示必须x次 {x,} 表示大于等于x次 {x,y} 表示大于等于x,小于等于y次
const reg2 = /^ab+c$/
const str2 = 'abbbbbbc';
let s2 = reg2.test(str2);    // true

const reg4 = /^ab{4}c$/
const str4 = 'abbbbc';
let s4 = reg4.test(str4);    // true

const reg6 = /^ab{4,6}c$/
const str6 = 'abbbbbbc';
let s6 = reg6.test(str6);    // true

[ ] 可选择项 

[ ] 匹配[ ]中任意一个
const reg1 = /[ABC]/g;
const str1 = 'AyuiyiuB78945C$%*ABC';
let s1 = str1.replace(reg1, '字母');
console.log(s1);    // 字母yuiyiu字母78945字母$%*字母字母字母

- 连字符

可使用 a-z A-Z 0-9 或中间截断

const reg2 = /[a-z]/g;  // [A-Z]大写
const str2 = '123uan/*iqmABC8odv';
let s2 = str2.replace(reg2, '字母');
console.log(s2);    // 123字母字母字母/*字母字母字母ABC8字母字母字母

匹配多个

const reg4 = /[a-zA-Z0-9_]/g;   // 常用的用户名合法检测
const str4 = 'q8w(*^&*989^1fAS4F*(&1a6dghf$%$UVuyG*)(^&$YG_xt';
let s4 = str4.replace(reg4, '他');
console.log(s4);    // 他他他(*^&*他他他^他他他他他他*(&他他他他他他他$%$他他他他他*)(^&$他他他他他

[^ ] 取反

除可选择项以外的

const reg5 = /[^0-9]/g;   // 除数字以外的
const str5 = 'G1dg32UT&gdT*14123fd121GTgdT*44fd&TG^%1424gf$^&G#%^gs*(464786135';
let s5 = str5.replace(reg5, '和');
console.log(s5);    // 和1和和32和和和和和和和14123和和121和和和和和和44和和和和和和和1424和和和和和和和和和和和和和464786135

. 除\r和\n以外的字符

注意,空字符串  '' 一样不会被匹配

const reg6 = /./g;
const str6 = ' a \nb1*\rQ';
let s6_1 = str6.replace(reg6, "空格");
let s6_2 = reg6.test("");
console.log(s6_1);    // 空格空格空格\n空格空格空格\r空格
console.log(s6_2);    // false

可选择项简写

\d => [0-9]  任意数字 \D => [^0-9] 除数字以外的 \w => [a-zA-Z0-9_]  任意字母数字下划线 \W => [^a-zA-Z0-9_] 除字母数字下划线以外的 \s => [\t\r\v\n\f]   任意换行空格制表符等 \S => [^\t\r\v\n\f]   任意换行空格制表符等

分组和分支结构

() 分组

就是常规理解的()的意思

const reg1 = /(ab)+/g;  // (ab)+  1个或1个以上的 ab
const str1 = 'ab12AB3ab*/-a/b7ab';
let s1 = str1.replace(reg1, "分组");
console.log(s1);    // 分组12AB3分组*/-a/b7分组
分组可进行捕获 捕获结果可用 $1 $2...表示,例如格式化日期:
const reg2 = /(\d{4})-(\d{2})-(\d{2})/;
const str2 = '日期为:2020-11-20';
let s2 = str2.replace(reg2, "$2/$3/$1");
console.log(s2);    // 日期为:11/20/2020

| 分支结构

类似或,可匹配多个项

const reg3 = /abc|123/g;
const str3 = '我是abc,你是123';
let s3 = str3.replace(reg3, "XXX");
console.log(s3);    // 我是XXX,你是XXX

 

标签:const,log,字母,正则,let,test,console
From: https://www.cnblogs.com/xt112233/p/17473782.html

相关文章

  • [IOS]开源库RegexKitLite正则表达式的使用
    1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。2.工程中添加libicucore.dylibframeworks。友情提醒:一般人导入RegexKitLite编译报错,正是因为没有导入这个类库,加上这个就OK了3.现在所有的nsstring对象就可以调用RegexKitLite中......
  • 将字符串里的\x01,\x02这些替换掉用正则表达式无效?
    大家好,我是皮皮。一、前言前几天在Python白银群【凡人不烦人】问了一个Python正则表达式的问题,这里拿出来给大家分享下。将字符串里的\x01,\x02这些替换掉用my_str=re.sub(r'\x0d','',my_str)这个结果不对,是什么原因呢?他的原始文档如下所示:看上去没有看到特殊二进制字符。二、......
  • Python正则表达式常用flag含义与用法详解
    Python正则表达式模块re中很多函数都支持一个flag参数,用来对正则表达式进行补充说明,例如findall(pattern,string,flags=0)match(pattern,string,flags=0)search(pattern,string,flags=0)sub(pattern,repl,string,count=0,flags=0)split(pattern,string,maxsplit=0,fla......
  • 正则表达式
    正则表达式,又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达......
  • Python使用正则表达式检查合法IP地址
    问题描述:函数main()接收一个任意字符串s作为参数,要求使用正则表达式检查字符串s是否为有效的IPv4地址,也就是由3个圆点分隔的4组十进制数且每组十进制数都介于区间[0,255]。如果字符串s符合要求就返回True,否则返回False。例如,main('0.0.0.0')返回True,main('119.189.876.0')返回False......
  • 正则表达式
    利用正则表达式对字符串进行替换publicstaticvoidmain(String[]args){ Stringstr="小红13012341111,小绿15122221234"; Stringregex="(1\\d{2})(\\d{4})(\\d{4})";//分成三组 str=str.replaceAll(regex,"$1****$3");//保留第一组和第三组 Sys......
  • 手机号验证正则表达式
    一般表单页面都需要填写手机号,校验用户输入的手机号码是否正确,就要用到正则表达式,用正则表达式来匹配手机号段,如在运营商号段内,则号码正确。因此,需要知道运营商最新的号段,如下所示:各大运营商手机号码段(注意时效性,有可能会不全)中国电信号段133、153、173、177、180、181、189、......
  • SQLServer正则表达式
    在SQLServer中,正则表达式是一种解析和匹配文本的非常有用的工具。它可以帮助我们快速有力的查询、修改数据库中的文本数据。下面我们将讲解SQLServer中的正则表达式的一些使用方法。正则表达式是什么正则表达式是一种通用的、表达式强大的匹配模式。它是由一系列字符和特殊字符......
  • 【Python查漏补缺(二)】正则表达式与深浅拷贝
    在开始正题之前讲一下打开文件的另一种方式。之前打开文件的方式f=open("文件路径","文件打开方式",encoding="utf8")模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开......
  • 正则表达式、re模块
    正则表达式的介绍定义:"""它是一门独立的语言,跟Python等的语言没有任何的关系,但是其他语言可以使用正则表达式来做一些功能,主要是用来筛选数据的。"""什么......