目录
1.正则表达式的简介
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
/*
* 正则表达式:
* - admin@qq.com
* - admin@.com adminqq.com 都不是正确的
* - 邮件的规则:
* 1.前边可以是xxx
* 2.跟着一个@
* 3.后边可以是xxx
* 4..com
*
*
* {也就是说:用一种规则将字符串定义成计算机和人都能看懂的规则}
* - 正则表达式用于定义一些字符串的规则
* 计算可以根据正则表达式,来检查一个字符串是否复合规则,
* 获取将字符串中符合规则的内容提取出来
*
*
*/
//创建正则表达式的对象
/*
语法:
* var 变量 = new RegExp("正则表达式","匹配模式")
*
* 使用typeof检查正则对象,会返回object
* 第一个参数:
* var reg = new RegExp("a"); 这个表达式可以用来检查这个字符串里面是否含有a
* - 有a则返回true
* - 没有则返回false
* 第二个参数:
* var reg = new RegExp("a","i");
* 在构造含糊中可以传递一个匹配模式作为第二个参数:
* 可以是:
* i 忽略大小写
* g 全局匹配模式
*
*/
//var reg = new RegExp("a");//显示:/a/ 这就是一个正则表达式
var str = "a";//
//怎么来使用正则表达式:使用reg的a正则来检查str的a是否符合规则
/*
正则表达式的方法:
* test()
* - 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则
* 如果符合则返回true,否则返回false
*
*
*/
/*方式一:*/
//var result=reg.test(str);//返回一个boolean值
//console.log(result);//返回一个ture
/*方式二:*/
//是否含有a?
//console.log(reg.test("abcd"));//true
//是否含有a?
//console.log(reg.test("bcd"));//false
//严格区分大小写
//console.log(reg.test("A"));//false
//不想区分大小写了怎么办?考虑第二个参数:匹配模式
/*var reg = new RegExp("a","i");
console.log(reg.test("A"));//true*/
</script>
</head>
<body>
</body>
</html>
2.正则表达式的语法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
创建正则表达式的方式:
使用字面量来创建正则表达式
* 方式一:var 变量 = /正则表达式/匹配模式
* 优点:使用字面量的方式创建更加简单,使用构造函数的更加灵活
*
*
*/
//第一种方式:
//var reg = new RegExp("a","i");
//第二种方式:
//1.检查是否有a/A
//reg = /a/i;
//console,log(reg.test("Abc"));//true
//2.检查一个字符串中是否有a或b或c
/*
使用 | 表示或者的意思
*/
//reg = /a|b|c/;
//console,log(reg.test("bcd"));//含有其中一个就为true
//3.创建一个正则表达式检查一个字符串中是否含有字母
//var reg = /a|b|c|d……/;麻烦
/*
[]里的内容也是或的关系
* 1.[ab] == a|b
* 2.[a-z] 任意小写字母
* 3.[A-Z] 任意大写字母
* 4.[A-z] 任意字母
* 5./a[bde]c/ a开头c结尾都可以
* 6.[^ ] 除了
* 7.[0-9] 任意数字
* 8.[^0-9] 除了数字
*
* 注意:
*
*/
/*1.reg = /[ab]/;
console,log(reg.test("bcd"));//true*/
/*2.reg =/[a-z]/;
console.log(reg.test("h"));//true*/
/*3.reg =/[A-Z]/;
console.log(reg.test("H"));//true*/
/*4.reg =/[A-z]/;
console.log(reg.test("H"));//true
console.log(reg.test("h"));//true*/
/*大小写都可以:*/
/*reg =/[A-Z]/i;
console.log(reg.test("H"));//true
console.log(reg.test("h"));//true*/
/*5.检查一个字符串中是否含有abc或adc或aec
相当于:a开头c结尾,中间[指定] 的字符串
*/
/*5.reg =/a[bde]c/;
console.log(reg.test("abc"));//true*/
/*6.reg =/[^ab]/;
console.log(reg.test("abc"));//true
[^ab] 除了ab还有c为true,如果只有a或者b或者ab 为false
*/
/*7.reg =/[0-9]/;任意数字
console.log(reg.test("123"));//true*/
/*8.reg =/[^0-9]/;非任意数字
console.log(reg.test("1232464661a"));//true*/
</script>
</head>
<body>
</body>
</html>
3.字符串和正则表达式的方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
split()
* - 可以将一个字符串拆分为一个数组
* - 方法中可以传递一个正则表达式作为参数这样方法会根据正则表达式式拆分字符串
* - 这个方法即使不指定全局,也就全拆分
*/
/*var str = "1a2b3c4d5e6f7";
//根据任意字母来将字符串拆分
var result = str.split(/[A-z]/);//传入需要拆分的条件,可以式字符串,也可以是正则表达式
console.log(result);*/
/*
search()
* - 可以搜索字符串中是否含有指定内容(和String中的index一样)
* 有的话返回为在的索引,没有为-1
* - 它可以接收一个正则表达式作为参数,然后会根据正则表达式去检索字符串
*
* - 不能全局指定,只会查找第一个,即使设置g有没有用
*
*
*/
/*var = "hello abc hello abc afc";
//result = str.search("abc");//显示:6
result = str.search(/a[bef]c/);//更加灵活
console.log(result);*/
/*
match()
- 可以根据正则表达式,从一个字符串中将符合条件的内容取出来
* - 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
* 解决:我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
* 可以为一个正则表达式设置多个匹配模式,而且顺序无所谓
* - match()会将查询的结果封装到一个数组当中返回,即使只查询到一个结果
*
*
*/
/*str = "1a2b3c4d5e6f7";
//result = str.match(/[A-z]/);//显示 a
result = str.match(/[A-z]/g);//全部都要
console.log(result);*/
/*str = "1a2b3c4d5e6f7AB9C";
result = str.match(/[a-z]/gi);
console.log(result);//console.log(result);
console.log(Array.isArray(result));//true*/
/*
replace()
- 可以将字符串指定内容替换为新的内容
* - 参数:
* 1.被替换的内容
* 2.新的内容
* - 默认只会替换第一个
*
*
* */
var str = "1a2b3c4d5e6f7AB9C"
//result = str.replace("a","-hhhhh-");//1-hhhhh-2b3c4d5e6f7AB9C
//result = str.replace(/a/gi,"-hhhhh-");//所有的a都被替换
//result = str.replace(/[a-z]/gi,"-hhhhh-");//所有的a都被替换,不管大写小写
//result = str.replace(/[a-z]/gi,"");//只剩数字了
console.log(result);
</script>
</head>
<body>
</body>
</html>
4.正则表达式的语法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
创建一个正则表达式检查一个字符串中是否含有连续的aaa
*
*
*
*/
/*
量词:
* - 通过量词可以设置一个内容出现的次数
* 1. {n} 正好出现的n次:a{n};
* 2. 量词只对它前边的一个内容起作用
* 3. {n} 正好出现n次 a{3} = a*3
* 4. reg = /(ab){3}/; = ab*3=ababab
* 5. {m,n}正好出现m-n次 var reg = /ab{1,3}/; = {m,n}表示m-n范围
* 6. {m,}正好出现m次以上 var reg = /ab{m,}/; = m次以上
*
* 7.+ 至少一个,相当于{1,} var reg = /ab+c/;// +表示至少一个b以上 ==相当于ab{1,};
* 8.* 0个或多个,相当于{0,}
* 9.? 0个或一个,相当于{0,1}
*
*/
/*1.var reg = /a{3}/;//连续三个a
console.log(reg.test("aaabc"));//true*/
/*2.var reg = /ab{3}/;//a 三个b
console.log(reg.test("abbbc"));//true*/
/*3.var reg = /a{3}b{3}/;//三个a 三个b
console.log(reg.test("aaabbbc")); true*/
/*4.var reg = /(ab){3}/;//三个ab
console.log(reg.test("abababccc")); true*/
/*5.var reg = /ab{1,3}/;//三个ab(b可以是1-3个)
console.log(reg.test("abccc")); true*/
/*6.var reg = /ab{3,}/;//三个b以上
console.log(reg.test("abbbbccc"));//true*/
/*7.var reg = /ab+c/;//至少一个b以上
console.log(reg.test("abbbbc"));//true*/
/*8.var reg = /ab*c/;//0个或者多个
console.log(reg.test("abbbbc"));//true*/
/*9.var reg = /ab?c/;//0个或者1个
console.log(reg.test("abbbbc"));//false*/
/*
检查一个字符串中是否以a开头
* 1. ^ 表示开头
* 2. $ 表示结尾
*
* 注意:如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式
* 3. ^a$ 完全符合正则表达式:a
* 4. ^a|a$ 以a开头或者以a结尾都符合
*
*
*/
/*1.var reg = /^a/;//开头是否为a
console.log(reg.test("abbbc"));//true ; ba//false*/
/*2.var reg = /a$/;//结尾是否为a
console.log(reg.test("abbbc"));//false ; ba// true*/
/*3.var reg = /^a$/;//开头结尾只能为a
console.log(reg.test("a"));//true ; //aa false//aaa fasle*/
/*4.var reg = /^a|a$/; 开头结尾有一个a就可以满足
console.log(reg.test("abc"));*/
/*
练习:创建一个正则表达式,用来检查一个字符串是否是一合法的手机号
*
* 手机号的规则:
* 1. 17837034022(11位)
*
* 1. 以1开头
* 2. 第二位:012不可以:3-9任意数字
* 3. 第三位为任意数字:长度9位
*
* ^1 [3-9] [0-9]{9}$//表示0-9则个数字占9位并结尾
*
*/
var phoneStr = "17837034022";
var phoneReg = /^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));
//检查字符串中是否含有手机号
//var phoneReg = /1[3-9][0-9]{9}/;
</script>
</head>
<body>
</body>
</html>
5.正则表达式的语法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
检查一个字符串中是否含有.
* .表示任意字符(任意字符)
*
* 正则表达式中使用\作为转义字符,.就是.
* \. 来表示 .
*
*/
/*1.检查是否有.*/
/*var strReg = /\./;
console.log(strReg.test("b."));//true*/
/*2.检查是否有\*/
/*var strReg = /\\/;
console.log(strReg.test("b.\\"));// 这里不能单独写一个\,需要写两个\\才能进行转义
*/
/*3.检查是否有/ 斜杠*/
/*var strReg = /\//;//加转义字符\使其成为/
console.log(strReg.test("b.//"));//加转义字符\使其成为/
*/
//当使用构造函数的时候
/*
注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中的转义字符
如果需要使用\ 则需要\\来替代(因为是在字符串中,自己需要转一次)
*/
/*var reg = RegExp("\\."); 显示一个.
var reg = RegExp("\\\\"); 显示一个\
console.log(reg.test("abcd.dgg"));//true*/
/*
* \w
* - 任意字母、数字、下划线_ [A-z0-9_]
* \W
* - 除了字母、数字、下划线_ [^A-z0-9_] 都可以
* \d
* - 任意的数字[0-9]
* \D
* - 除了数字[^0-9]
* \s
* - 空格(有空格)
* \S
* - 除了空格(不止含有空格)
* \b
* - 单词边界
* \B
* - 除了单词边界
*
*
*
*/
/*reg = /\S/;
console.log(reg.test(" "));//false*/
/*
创建一个正则表达式检查一个字符串中是否含有单词child
*
*/
/*单词边界*/
/*reg = /child\b/;
console.log(reg.test("hello child ren"));//true*/
//console.log(reg.test("hellochildren"));//false
/*需求*/
/*接收一个用户输入*/
//var str = prompt("请输入用户名");
/*1.去除两边的空格*/
//var str = " hello ";
//去除字符串中的空格
//去除空格就是使用""来替换空格
/*console.log(str);
str = str.replace(/\s/g , "");//这里只替换一个,需要全部替换才可以(/\s/g , "");
console.log(str);*/
/*2.去除开头两边的空格,中间不管*/
var str = " he llo ";
console.log(str);//原
//str = str.replace(/^\s*/, "");//^空格开头——*无数多个 \s表示空格的
//str = str.replace(/\s*$/, "");//结尾空格去掉
//console.log(str);//少了空格之后的
/*整合一下**/
//1./^\s*/开头 2./\s*$/结尾
//str = str.replace(/^\s*|\s*$/g, "");//显示he llo *也是0个到多个
str = str.replace(/^\s+|\s+$/g, "");//显示he llo +也是一个到多个
</script>
</head>
<body>
</body>
</html>
6.电子邮件正则表达式的使用以及编写
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
邮件的正则表达式:
* hello.nihao@abc.com.cn
*
* 拆分: hello .nihao @ abc .com .cn
*
* 任意字母数字下划线 .任意字母数字下划线 @ 任意字母数字 .任意字母(2-5) .任意字母(2-5)
*
任意字母数字下划线3个以上 任意字母数字下划线0个或多个 任意字母数字(1个)+多个
* \w{3,} (\.\w)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}
*
* 注意的一点就是:^开头和结尾$必须限定
*
*/
var emailReg = /\w{3,}(\.\w)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}/;
var email ="1808569586@qq.com";// ture
//var email ="1808569586qq.com";//false
console.log(emailReg.test(email));
/*
先一个一个把它拆分出来,一个一个的去思考
* 网上有常有的正则表达式总结,如果写项目的时候用到就直接可以搜索使用等
* 但是不一定对,需要你仔细的去修改
*
*/
</script>
</head>
<body>
</body>
</html>
总结
正则表达式,自己得会,更细看百度。