正则表达式的简介
正则表达式用于定义一些字符串的规则
- 计算机可以根据正则表达式,来检查一个字符串是否符合规则
- 获取将字符串中符合规则的内容提取出来
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
//var 变量 = new RegExp("正则表达式", "匹配模式");
// 使用typeof检查正则对象,会返回object
var reg = new RegExp("a");
console.log(typeof reg);
//这个正则表达式可以来检查一个字符串中是否含有a【严格区分大小写】
//在构造器中可以传递一个匹配模式作为第二个参数
//可以是
//i 忽略大小写
//g 全局匹配模式
</script>
</body>
</html>

正则表达式的方法:
test()
-
使用这个方法可以用来检查一个字符串是否符合正则表达式的规则
-
如果符合则返回true,否则返回false
reg.test(str)
正则语法
使用字面量来创建正则表达式
语法:var 变量 =/正则表达式/匹配模式
使用字面量的方式创建更加简单,但使用构造函数创建更加灵活。
[]
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
/*[]里的内容也是或的关系
[ab] == a| b
[a-z] 任意小写字母
[A-Z] 任意大写字母
[0-9] 任意数字
[A-z] 任意字母,忽略大小写
*/
var reg2 = /[0-9]/;
var boo2 = reg2.test("3854");
console.log(boo2);
</script>
</body>
</html>

[^]除了
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
var reg3 = /[^a-z]/;
var boo2 = reg3.test("3854");//true
var boo3 = reg3.test("a");//false
console.log(boo2);
console.log(boo3);
</script>
</body>
</html>

字符串和正则相关的方法
-
split()- 可以将一个字符串拆分为一个数组
- 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
- 这个方法即使不指定全局匹配,也会全都拆分
-
search()- 可以搜索字符串中是否含有指定内容
- 如果搜索到指定内容,则会返回第一次出现的索引,如果没有收索到返回-1
- 它可以接受一个正则表达式作为参数,然后回根据正则表达式去检索字符串
serach()只会查找第一个,即使设置全局匹配也没用
-
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配,这样就会匹配到所有的内容(使用了"g"标识符或者设置它了的global属性值为ture时,那么新创建的正则表达式对象将使用模式对要将要匹配的字符串进行全局匹配)
可以为正则表达式设置多个匹配模式,且顺序无所谓
match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果。 -
replace()-
可以将字符串指定内容替换新的内容
-
参数
- 被替换的内容,可以接收一个正则表达式作为参数
- 新的内容
-
默认只会替换第一个,所以当你想全替换的时候,可以使用全局匹配
-
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
var str = "1a2b3c4d5f6g7h8j9k10";
var result = str.split(/[A-z]/);
console.log(result);
var str1 = "hello zhen chun i love you";
var result1 = str1.search(/[zc]h/);
console.log(result1);
var str2 = "1a2b3c4d5f6g7h8j9k10";
var result2 = str2.match(/[a-z]/gi);
console.log(result2);
var str3 = "1a2a3c4a5a6A7A8a9a10";
var result3 =str3.replace(/a/ig,",");//如果你没有传第二个参数进去,那就是undefined把a替换了!
console.log(result3);
</script>
</body>
</html>

正则表达式语法
var reg =/^a/;//a字开头
var str ="abaaabb";
var result1 =reg.test(str);
console.log(result1);
注意 :如果在正则表达式同时使用^ $则要求字符串必须完全符合正则表达式
-
量词
-
通过量词可以设置一个内容出现的次数
-
量词只对它前边的一个内容起作用
-
{n}至少出现n次 -
{m,n}出现m到n次 -
{m,}m次以上 -
+至少一个,相当于{1,} -
*0个或多个,相当于{0,} -
?0个或1个,相当于{0,1}
-
-
-
^表示开头 -
$表示结束
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
var reg = /a{3}/;//至少出现3次
var str = "aaaa";
var result = reg.test(str);
console.log(result);
var reg1 = /a{1,3}/;//出现1次到3次
var str1 = "aaaa";
var result1 = reg1.test(str1);
console.log(result1);
var reg3 = /a+/;//相当于{1,},一般用"x+"这种方式
var str3 = "aaaa";
var result3 = reg3.test(str3);
console.log(result3);
var reg4 = /a*/;//0个或多个
var str4 = "b";
var result4 = reg4.test(str4);
console.log(result4);//true
var reg5 = /a?/;//0个到1个
var str5 = "aaaaaaa";
var result5 = reg5.test(str5);
console.log(result5);
var reg6 = /a$/;
var str6 = "bbbba";
var result6 = reg6.test(str6);
console.log(result6);
var reg7 = /^a$/;//这种情况下下只有a才是true,aa都是false
var reg8 = /^a|a$/;//这种情况才是以a开头,以a结尾
var str7 = "a";
var result7 = reg7.test(str7);
console.log(result7);
</script>
</body>
</html>

正则表达式语法2
\w
任意字符、数字、_ (相当于[A-z 0-9 _])
\W
除了字母、数字、_ ([ ^A-z 0-9 _ ])
\d
任意的数字[0-9]
\D
除了数字 [ ^0-9 ]
\s
空格
\S
除了空格
\b
单词边界
\B
除了单词边界
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript字符串方法 - 原生Console输出版</title>
</head>
<body>
<script>
var str = prompt("请输入")
str = str.replace(/^\s*| s*$/g, "");//去掉前尾空格
console.log(str);
</script>
</body>
</html>