JavaScript正则表达式学习

创建

严格区分大小写

构造函数

//var pattern = new RegExp("正则表达式内容","修饰符");
var pattern = new RegExp("abc","ig");

字面量

//var pattern = /正则表达式/修饰符;
var pattern=/adc/img;

修饰符

修饰符只能是g、i、m,可以省略

i

ignore case 忽略大小写

m

multiline 多行匹配(\n)
如果目标字符串中没有\n的话,m修饰符无意义

g

global 全词匹配
如果加了该修饰符,在匹配时会维护一个 lastIndex 的属性,用来记录当前匹配到这个字符串时的结束位置,下一次匹配时,会从lastIndex开始
如果没有g修饰符,lastIndex一直为0

原型方法

exec()

从参数获取目的字符串
参数:字符串
返回值:类数组对象[数组,index(匹配到的目标字符串的开始下标),input…]

var pattern = /abc/g;
var str="abc";
var result=pattern.exec(str);
console.log(result);//[ 'abc', index: 0, input: 'abc', groups: undefined ]

/abc/ :只匹配abc或者它的其他大小写状态
/abc(d|e)/ :匹配abcd或abce
const readline = require("readline-sync");
var pattern=/abc/i;
var str=readline.question("请输入你要检验的字符串");
console.log(pattern.exec(str));

在这里插入图片描述

test()

用来检测一个字符串是否匹配某个模式
参数:str
返回值:Boolean类型 true/false

var pattern =/abc/i;
var string ="hello 123 abcd";
//只要找到abc,不管后面是什么,找到就直接输出true
console.log(pattern.test(string));//true

toString()

参数:不需要传参
返回值:string

var pattern =/abc/i;// /abc/i
// var pattern = new RegExp("abc","m"); // /abc/m 一般这种时候调用toString
console.log(pattern.toString());

原型属性

属性描述
global是否开启了全局匹配
ignoreCase是否忽略大小写
multiline是否开启了多行匹配
source正则表达式的字符串
flags正则表达式的修饰符
var pattern =/abc/img;
console.log(pattern.global);//true
console.log(pattern.ignoreCase);//true
console.log(pattern.multiline);//true
console.log(pattern.source);//abc
console.log(pattern.flags);//gim

正则表达式规则

正则表达式不是js特有的,所有编程语言都可以用

字符类

符号作用
.用来匹配任意单个字符,行结束符除外
\d匹配任意的一个阿拉伯数字,等价于[0-9]
\D匹配任意一个不是阿拉伯数字的字符,等价于[^0-9]
\w匹配任意字母、数字、下划线,等价于[A-Za-z0-9]
\W匹配任意不是字母、数字、下划线,等价于[^A-Za-z0-9]
\s匹配空白符、空格、制表符、换行符、换页符和其他Unicode(\u00A0等)
\S匹配一个非空白字符
\t匹配一个水平制表符(tab)
\n匹配一个换行符
\r匹配一个回车符
\v匹配一个垂直制表符
\f匹配一个换页符
var pattern=/abc./g;//匹配以abc开头的四个字符的
var str="abcd abc abcc";
console.log(str.match(pattern));//[ 'abcd', 'abc ', 'abcc' ]
//匹配abc.
//var pattern=/abc./g;//[ 'abcd', 'abc.', 'abc.' ]
var pattern=/abc\./g;//[ 'abc.', 'abc.' ] 这里进行转义,这样就会只输出abc.
var str="abcd abc. abc.c";
console.log(str.match(pattern));
//匹配三个字符开头.结束
var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.match(pattern));//[ 'abc.', 'a0c.' ]

字符集合

集合描述
[0-9]0-9
[A-Z]A-Z
[^A-Z]取反,匹配不包括在A-Z间的值
[012]只有012
{n}通过量词来设置一个内容出现的次数,如a{3}表示a正好出现三次
{m,n}出现m-n次
{m,}m次以上
+至少一个,相当于{1,}
*0个或多个,相当于{0,}
-0个或1个,相当于{0,1}
// var pattern=/^(\d{4})-(\d{2})-(\d{2})$/g;
var pattern=/^[1-9]\d{3}-(0[1-9]|1[1-2]})-(0[0-9]|[1-2][0-9]|3[0-1])$/g;
var str="2021-09-01";
var str1="2021-31-01";
console.log(pattern.test(str));//true
console.log(pattern.test(str1));//false
var reg=/[ab]/;//[]里的内容也是或的关系
//var reg=/[a-z]/;//表示任意小写字母
var str='adob';
var result = reg.test(str);
console.log(result);//true

边界

字符描述
^匹配输入开头
$匹配输入结尾
var reg=/^p/;//检查字符串是否以p开头
var str='pk';
var result = reg.test(str);
console.log(result);//true

分组

|

// var reg=/a|b/;//检查一个字符串中是否有a或b,使用|表示或
var str='adob';
var result = reg.test(str);
console.log(result);//true

Javascript中 String对正则表达式的支持

match()

要使用正则表达式的全局修饰符g
调用者:string
参数:正则表达式
返回值:数组(匹配成功结果组成的数组)

//匹配三个字符开头.结束
var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.match(pattern));//[ 'abc.', 'a0c.' ]

search()

调用者:string
参数:正则表达式,如果参数不是正则表达式,会先使用RegExp将其转为构造函数
不支持全局检索g
返回值:如果匹配成功,返回第一个匹配成功的值的索引位置;如果匹配不成功返回-1

var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.search(pattern));//5

replace()

替换文本内容
调用者:string
参数:正则表达式,要替换的字符串
返回值:替换过后的文本(不改变 原字符串)

var text="javascript";
//将全小写的换成驼峰式
console.log(text.replace(/javascript/gi,"JavaScript"));//JavaScript

split()

可以将一个字符串拆分为一个数组
方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串

var str="1a2b3c4d5";
var result=str.split(/[A-z]/);//根据任意字母来拆分字符串
console.log(result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值