正则表达式

时间:2025-01-15 22:37:13

一,正则表达式

正则表达式是由特殊字符组成的一组规则表达式,用于检测字符串是否符合某种规则
正则的定义,
1,/正则表达式/标识符 字面量
2,new RegExp(正则表达式,标识符) 构造函数

想要表达数字
var numReg = /5/

想要表达字符
var strReg = /s/

想要表达其他字符
var otherReg = /%/

检查一个字符串是否是“abcdef”
定义一个正则表达式
var reg = /abcdefg/;
正则表达式有一些方法,其中test用于检测字符串是否符合当前正则的描述
var result = (‘abcdefg’) //返回一个布尔值
var result1 = (‘abcdefgyyy’) //返回一个布尔值

二,正则表达式中的特殊字符

\s表示所有的空白符
\S表示所有点非空白符
\d表示所有的数字
\D表示所有的非数字
\w表示数字,字母,下划线
\W表示非数字,非字母,非下划线
\b表示单词边界

正则表达式中,一个字符和一个特殊字符只能匹配字符串中的一个字符

var reg = /\w/;
var str = "11";
var str1 = "1b";
//检测str是否由两个数字组成
console.log(reg.test(str))    // true
console.log(reg.test(str1))    // true
//无法达成检测两个是否都是数字点目的
//需要将正则修改为/\d\d/
var reg1 = /\d\d/;
console.log(reg1.test(str1)) //false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

正则表达式中 除了能够表示规则之外 还有数量规则{}

var reg2 = /\d{11}/;
这个{}属于正则表达式中的元字符,作用是规定数量,对{}前面的“一个”生效
如何区分一个 ? 每一个特殊字符或者普通字符都是一个 如果被()包裹,则被包裹起来的规则作为一个

console.log(reg2.test("111111111111111111111111111111" ))//长度明显超过11 true
console.log(reg2.test("111aa111111111111111111111111111" ))//长度明显超过11 true
console.log(reg2.test("111aa1111" ))//并没有连续11个数字都是数字 false
  • 1
  • 2
  • 3

正则表达式中表示长度的有 ? + * {}
?表示0个或者1个
+表示至少一个(1个或者多个)

*表示任意个(0个或者多个)
{}有三种用法
{数字}固定长度
{m,n}表示最少m个,最多n个
{m,}表示最少m个,最多不限制

正则表达式中表示特殊含义的,() ,[] ,{} | ^ $ .
如果想要在正则表达式中表示上面元字符本身的含义,转译

()表示分组
[]表示范围 [a-d]匹配abcd中点任何一个字符 ,[1-5]匹配12345中的任何一个
{}表示数量
|表示或者
^在正则的最左侧出现,表示开头, 在[]中出现,表示取反
$在正则点最末尾出现,表示结尾
. 表示除了回车和换行之外的任何内容

//定义正则表达式 检测字符串中是否都是{}
var str ="{{{{{{{{{";
var reg = /^{+$/; //^开头,$结尾
//以{开头,以{结尾,中间都是连续的{,数量必须至少一个
console.log(reg.test(str)) // false
  • 1
  • 2
  • 3
  • 4
  • 5

写一个验证邮箱的正则表达式
var emailStr = “dashuaige@”;
var emailReg = /^\w{1,10}@\w{1,5}.(com|cn|org|net)$/;

三,标识符(修饰符)

字符串中有一些方法是可以与正则表达式配合的
var srt = “asadnbdashirleysasadshirleyaa”;
var reg = /shirley/g; //如果这里没有标识符,则只替换一次就结束
使用方法一

var str1 = str.replace("shirley","**")
  • 1

使用方法二

var str = "abcde";
var obj={
	a:"1",
	b:"2",
	c:"3",
	d:"4",
	e"5"
}

var str1 = str.replace(/\w/g,function(match,index,str){
	//(match)
	return obj[match];
});
consoloe.loh(str1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

使用方法三

当正则表达式中出现()的时候,函数的第二个参数就是 1 , 具 体 有 多 少 个 1,具体有多少个 1,参数,要看正则表达式中有多少个()

var str = "border-left-redius";
str.replace(/-(\w)/g,function(match,$1,index,str){
	console.log(match,index,str);
	//return match[1].toUpperCase();
	console.log($1) //l ,r
	return $1.toUpperCase()
})
console.log(str1);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

四,方法

var str = "adaAfsd"
//找到大写字母A
var res = str.match("A");
console.log(res)
//找到所有的大写字母
var reg = /[A-Z]/g;
var arr = str.match(reg);
console.log(arr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8


search不会往下找

var str = "adaAfsd"
//找到大写字母A
var res = str.search("A");
console.log(res)
//找到所有的大写字母
var reg = /[A-Z]/g;
var arr = str.search(reg);
console.log(arr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

var str = "adaAfsd";
var reg = /A/g;
//找到大写字母A
var res = reg.exec(str);
console.log(res)
//exec方法是正则表达式点方法 用于寻找字符串中对应的正则匹配到的字符串的位置
//与字符串match方法类似
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7