一,正则表达式
正则表达式是由特殊字符组成的一组规则表达式,用于检测字符串是否符合某种规则
正则的定义,
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