1.正则表达式简介:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
*
* - 用户在网页上浏览时,往往需要向服务器发送
* 如:用户名 密码 电子邮件 QQ号 手机号。。。
* - aaaa.com
* - xxxxx@xxxx.com.cn
* - 前边乱七八糟,后边一个@,然后再乱七八糟,然后在点,然后再乱七八糟
*
* 正则表达式
* - 正则表达式用来定义一规则,计算机可以根据这些规则
* 来判断一个字符串是否符合规则,或者从一个字符串中将符合规则的内容提取出来
*/
//创建一个正则表达式的对象
//语法:var 变量 = new RegExp("正则表达式","匹配模式");
//a这个正则表达式,表示检查一个字符串中是否有a
//在正则的构造函数中,可以传递一个匹配模式的字符串作为第二个参数
//g 全局匹配模式 i 忽略大小写匹配
var reg = new RegExp("abcd","i");
//使用typeof来检查正则,会返回object
//console.log(typeof reg);
//创建一个字符串
var str = "Acb";
/*
* 正则表达式中有一个方法 test()
* 他可以用来检查一个字符串是否符合正则表达式的要求
* 如果符合则返回true,否则返回false
*/
var result = reg.test(str);
console.log(result);
</script>
</head>
<body>
</body>
</html>
2.创建正则表达式方法二:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
//var reg = new RegExp();
/*
* 创建正则表达式方式二:
*
* var 变量 = /正则表达式/匹配模式;
*/
var reg = new RegExp("a","i");
reg = /a/i;
//console.log( reg.test("Abc") );
//创建一个正则表达式,检查一个字符串中是否含有a或b
/*
* | 表示或者
*/
reg = /a|b|c/;
//创建一个正则表达式,表示任意的小写字母
reg = /a|b|c|d|e|f|h|i|j|k/;
/*
* [] 中括号中的内容也表示或
* [a-z] 任意的小写字母
* [A-z] 任意字母
* [0-9] 任意数字
*
* [^ ] 表示除了括号中的内容
*/
reg = /[abc]/;
reg = /[a-z]/;
reg = /[A-z]/;
reg = /[0-9]/;
//检查一个字符串中是否含有abc 或 adc 或aec
reg = /abc|adc|aec/;
reg = /a[bde]c/;
//除了小写字母
reg = /[^a-z]/;
//除了小写字母和数字
reg = /[^a-z0-9]/;
var result = reg.test("babccdef1");
console.log(result);
</script>
</head>
<body>
</body>
</html>
3.字符串和正则相关的方法:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
* split()
* - 可以将一个字符串拆分为一个数组
* - 这个方法中可以传递一个正则表达式作为参数,这样将会根据正则表达式去拆分字符串
* - split()拆分字符串,无论是否指定全局匹配,都会全都拆
*/
var str = "a@b@c@d@e";
str = "中abc国adc万aec岁aec!";
var reg = /a[bde]c/;
var result = str.split(reg);
//console.log(result);
/*
* search()
* - 可以用来搜索一个字符串中是否含有指定内容
* - 如果查询到了,会返回它第一次出现的索引,如果没找到则返回-1
* - 也可以接收一个正则表达式作为参数,将会根据正则表达式去字符串中查询内容
* - search()只会匹配第一个,即使加了全局匹配
*/
str = "hello abc hello how are you aec";
reg = /a[bde]c/g;
//查询字符串中是否有abc 或 adc 或 aec
result = str.search(reg);
console.log(result);
/*
* match()
* - 根据正则表达式将字符串中符合要求的内容提取出来
* - 默认情况match()只会匹配到第一个符合条件的内容,
* 如果需要匹配所有的内容,则需要设置全局匹配模式
* - match()方法会将匹配到的内容封装到一个数组中返回,
* 即使只匹配到了一个,也会保存到数组中
* - 匹配模式可以不写,也可以同时写多个,并且顺序不限
*
*/
str = "aBcasdasdadcsdasdaecasdafc";
reg = /a[bdef]c/ig;
result = str.match(reg);
/*
* replace()
* - 可以将字符串的指定内容,替换为新的内容
* - 参数:
* 第一个,被替换的内容,可以是一个正则表达式
* 第二个,新的内容
*/
str = "aBcasdasdadcsdasdaecasdafc";
//将字符串中的a,替换为 孙悟空
result = str.replace(/a/g,"孙悟空");
result = str.replace(reg,"孙悟空");
//console.log(result);
</script>
</head>
<body>
</body>
</html>
4.正则表达式量词:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
//创建一个正则表达式,检查一个字符串中是否含有abc
var reg = /abc/;
//创建一个正则表达式,检查一个字符串中是否含有bbb
reg = /b{3}/;
/*
* 量词
* - 量词用来表示一个内容出现的次数
* - {n} 正好出现n次
* - {m,n} 出现m-n次
* - {n,} 至少n次
* - + 至少出现1次,相当于{1,}
* - * 0个或多个,相当于{0,}
* - ? 0个或1个,相当于{0,1}
*/
//创建一个正则表达式,检查一个字符串中是否有ababab
reg = /(ab){3}/;
reg = /ab{3}c/;
reg = /ab{1,3}c/;
reg = /ab{3,}c/;
reg = /ab+c/;
reg = /ab*c/;
reg = /ab?c/;
var result = reg.test("abbc");
//console.log(result);
/*
* ^ 表示开头
* $ 表示结尾
*/
//创建一个正则表达式,检查一个字符串是否以a开头
reg = /^a/;
//创建一个正则表达式,检查一个字符串是否以a结尾
reg = /a$/;
//使用^开头 $结尾的正则表达式,必须字符串和正则表达式完全匹配才会返回true
reg = /^a$/;
reg = /^a{3}$/;
result = reg.test("aaa");
//console.log(result);
/*
* 检查一个字符串是否是一个有效的手机号
*
* 手机号是11位的纯数字
*
* 1 3 567890123
*
* 以1开头 3-9之间的任意数字 0-9之间的任意数字9个
*
* ^1 [3-9] [0-9]{9}$
*
*/
var phoneReg = /^1[3-9][0-9]{9}$/;
var phone = "17567890123";
console.log(phoneReg.test(phone));
</script>
</head>
<body>
</body>
</html>
5.正则表达式的其他字符补充:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var str = "@";
//创建一个正则表达式,检查一个字符串中是否含有.
var reg = /./;
var result = reg.test(str);
/*
* . 在正则中代表任意字符
*
* 在正则表达式中,可以使用 \ 作为转义字符
* \. 来表示.
* \\ 表示\
*/
str = "abcbcd";
reg = /\./;
//当使用构造函数来创建正则表达式时,由于它的正则是以字符串的形式传递的
//而\在字符串中也是转义字符串,所以这里需要使用\\来表示一个
reg = new RegExp("\\.");
str = "abcdefg\\";
reg = /\\/;
reg = new RegExp("\\\\");
//console.log(reg);
result = reg.test(str);
//console.log(result);
/*
* \w
* - 相当于[A-z0-9_]
* - 任意字母数字下划线
* \W
* - 相当于[^A-z0-9_]
* - 除了字母数字下划线
* \d
* - 任意数字
* \D
* - 除了数字
* \s
* - 空格
* \S
* - 除了空格
* \b
* - 单词边界
* \B
* - 除了单词边界
*/
reg = /\w/;
reg = /\W/;
reg = /\d/;
reg = /\D/;
reg = /\s/;
reg = /\S/;
result = reg.test("abc");
//console.log(result);
//创建一个正则表达式,检查一个字符串中是否含有child这个单词
reg = /\bchild\b/;
result = reg.test("child hello ");
//console.log(result)
//用户通过页面输入一个内容
var username = prompt("请输入一个用户名:");
/*
* 去除字符串中的前后空格
* 实际上就是将字符串中的空格替换为空串
*/
console.log(username);
//username = username.replace(/\s/g , "");
//username = username.replace(/^\s*/ , "");
username = username.replace(/^\s*|\s*$/g , "");
//console.log(username);
/*
编写电子邮件的正则表达式
*/
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
*
* 邮件的正则表达式
* abc .hello @ abc .com .cn
*
* 开头 字母 数字 下划线 一位以上 \.任意字母数字下划线 一位以上 @ 字母数字一位以上 \.字母(2-5位) \.字母(2-5位)
*
* ^\w+ (\.\w+)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}$
*
*
*
*/
var emailReg = /^\w+(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var email = "hello.hello@abc.com.cn";
console.log(emailReg.test(email));
</script>
</head>
<body>
<h1>文字</h1>
<p></p>
<a href="#">超链接</a>
<!--我是一个注释-->
</body>
</html>