1、创建正则表达式

1-1.定义正则表达式

正则表达式:规定字符串出现规律的表达式
var reg = //

  1. <!--
  2. 正则表达式:规定字符串出现规律的表达式
  3. -->
  4. <script>
  5. var str = "你好你的你们"
  6. var reg = /你/g;
  7. /* g修饰符--全局搜索 */
  8. console.log(str.replace(reg,"*"))
  9. </script>

image.png

1-2.构造函数正则表达式

通过构造函数创建正则表达式(了解/不推荐)
var reg = new RegExp(//,”g”)

  1. <script>
  2. /* 通过构造函数创建正则表达式(了解/不推荐) */
  3. var reg = new RegExp(/你/,"g"); //声明的一个过滤的规则
  4. var str = "你们你好";
  5. console.log(str.replace(reg,"*"));
  6. </script>

image.png

2、字符集(原子表元字符)

2-1.备选字符集(原子表)

备选字符—规定某一位字符的备选字符列表
特点:多个里面选一个

  1. <script>
  2. /* 备选字符--规定某一位字符的备选字符列表
  3. 特点:多个里面选一个
  4. */
  5. var str = "上海,上天,上哪";
  6. var reg = /上[海天哪]/g;
  7. console.log(str.replace(reg,"*"))
  8. var s = "你sb,他sx,她sd";
  9. var r = /s[bxd]/g;
  10. console.log(s.replace(r,"*"))
  11. </script>

image.png
备选字符集
[0-9] 所有数字
[a-z] 所有小写字母
[A-Z] 所有大写字母
[A-z] 所有字母

  1. <script>
  2. /* 备选字符集
  3. [0-9]
  4. [a-z]
  5. [A-Z]
  6. [A-z]
  7. */
  8. var str = "asd1564asdaw48TM";
  9. var reg = /[0-9]/g;
  10. console.log(str.replace(reg,"*"));
  11. console.log(str.replace(/[a-z]/gi,"*"));
  12. console.log(str.replace(/[A-z]/g,"*"));
  13. // i--忽略大小写
  14. </script>

image.png

2-2.预定义字符集(元字符)

备选字符集 预定义字符集
[0-9] \d
[0-9A-z_] \w
除换行符外所有 .
空格与换行符 \s

  1. <script>
  2. /*
  3. 备选字符集 预定义字符集
  4. [0-9] \d
  5. [0-9A-z_] \w
  6. 除换行符外所有 .
  7. 空格与换行符 \s
  8. */
  9. var str = '45sa6d4asd5a sd4a@@\n--';
  10. var reg = /\d/g;
  11. console.log(str.replace(reg,"*"));
  12. reg = /\w/g;
  13. console.log(str.replace(reg,"*"));
  14. reg = /./g
  15. console.log(str.replace(reg,"*"));
  16. reg = /\s/g
  17. console.log(str.replace(reg,"*"));
  18. </script>

image.png

3、转义字符

\字符转译有歧义的字符

  1. <script>
  2. var a = "hello.world";
  3. /* \字符转译有歧义的字符 */
  4. var reg = /\./;
  5. console.log(a.replace(reg,"*"));
  6. </script>

image.png

4、量词

4-1.自定义量词

规定字符出现的次数
量词 {6}
正则函数 test()

  1. <script>
  2. /* 规定字符出现的次数
  3. 量词 {6}
  4. */
  5. /* 正则函数 test() */
  6. var reg = /^\d{6}$/;
  7. var pwd = 123456;
  8. console.log(reg.test(pwd));
  9. </script>

image.png
{m} 只出现m次
{m,} 至少出现m次
{m,n} 至少出现m次,至多出现n次

  1. <script>
  2. /*
  3. {m} 只出现m次
  4. {m,} 至少出现m次
  5. {m,n} 至少出现m次,至多出现n次
  6. */
  7. var str = "454525455fasd"
  8. var reg = /\d{6,}/
  9. console.log(reg.test(str));
  10. </script>

4-2.预定义量词

? {0,1}
+ {1,}
* {0,}

  1. <script>
  2. /*
  3. ? {0,1}
  4. + {1,}
  5. * {0,}
  6. */
  7. var str = "hello123"
  8. var reg = /[a-z]+/
  9. console.log(str.replace(reg,"*"))
  10. console.log(str.replace(/[a-z]*/,"*"))
  11. </script>

image.png

5、贪婪和懒惰

5-1.贪婪模式

贪婪模式:在给定量词的情况下,会默认取最大的量词
只要正则表达式的某一段满足,就输出结果为true
tips:+,*量词默认就是贪婪模式

  1. <script>
  2. /* 贪婪模式:在给定量词的情况下,会默认取最大的量词 */
  3. var str = "1231234hello";
  4. var reg = /\d{3,6}/;
  5. console.log(str.replace(reg,"*"));
  6. /* 只要正则表达式的某一段满足,就输出结果为true */
  7. console.log(reg.test(str));
  8. /* tips:+,*默认就是贪婪模式 */
  9. </script>

image.png

5-2.懒惰模式

懒惰模式 —{}?
取最小满足的量值

  1. <script>
  2. var str = "123456hello";
  3. /* 懒惰模式 --{}? */
  4. var reg = /\d{3,6}?/;
  5. console.log(str.replace(reg,"*"))
  6. </script>

image.png

6、选择和分组

| 选择
() 分组

  1. <script>
  2. /*
  3. | 选择
  4. () 分组
  5. */
  6. var str = "你去哪里,他在..."
  7. var reg = /你去|他在/g;
  8. console.log(str.replace(reg,"*"));
  9. </script>

image.png

7、边界约束

^…$ —边界约束
严格控制与正则表达式的格式
^…控制开头格式
…$控制结束格式
^…$ 控制全部格式

  1. <script>
  2. /* ^...$ --边界约束
  3. 严格控制与正则表达式的格式
  4. */
  5. var phone = "02788667777"
  6. var reg = /^(027)?8\d{7}$/;
  7. console.log(reg.test(phone));
  8. </script>

image.png

  1. <script>
  2. var str = "fdjasd1231"
  3. var reg = /^\d+/;
  4. console.log(reg.test(str))
  5. console.log(/\d+$/.test(str))
  6. var str = " hello "
  7. var reg = /(^\s+)|(\s+$)/g;
  8. console.log(str.trim());
  9. console.log(str.replace(reg,""))
  10. </script>

image.png

8、非

/[^…]/ 选择非输入内容
/D 选择非数字 (其他大写元字符相同)

  1. <script>
  2. var str = "abc123"
  3. var reg = /[^abc]/g;
  4. console.log(str.replace(reg,"*"));
  5. var test = "?@hello123-"
  6. reg = /\D/g;
  7. console.log(test.replace(reg,"*"));
  8. </script>

image.png

!9、数据类型的区别

基本数据
number,string,boolean
引用数据
Array,Function,Object

  1. <script>
  2. /* 基本数据
  3. number,string,boolean
  4. */
  5. /* 引用数据
  6. Array,Function,Object
  7. */
  8. var a = 20;
  9. console.log(a);
  10. var b = 10;
  11. a = 30;
  12. console.log(a)
  13. </script>

image.png
基本数据类型在赋值运算=
只传值

  1. <script>
  2. /* 基本数据类型在赋值运算=
  3. 只传值
  4. */
  5. var a = 20;
  6. var b = a;
  7. a = 30;
  8. </script>

引用数据类型
占两块内存 —栈和堆
栈中存数据名和指针
堆中存属性和值

赋值运算=时,赋予的是栈中的指针,指向同一个

  1. <script>
  2. /* 引用数据类型
  3. 占两块内存 --栈和堆
  4. 栈中存数据名和指针
  5. 堆中存属性和值
  6. 赋值运算=时,赋予的是栈中的指针,指向同一个值
  7. */
  8. var obj = {
  9. name:"李四"
  10. }
  11. var wang = obj;
  12. obj.age = 18;
  13. wang.sex = "男"
  14. console.log(obj);
  15. console.log(wang);
  16. </script>

image.png
image.png

例子

1.将对象中name属性的非中文转化为。。。

  1. <script>
  2. var str = "https://www.baidu.com/123456"
  3. var reg = /\d+/g;
  4. console.log(str.replace(reg,""));
  5. var arr = [
  6. {id:1001,name:"你好456sdd"},
  7. {id:1002,name:"年少多金45asdw6sdd"},
  8. {id:1003,name:"asdasd暗示你点击456sa55dsdd"}
  9. ]
  10. arr.forEach(item=>{
  11. item.name = item.name.replace(/\w+$/g,"")+"...";
  12. console.log(item);
  13. })
  14. </script>

image.png

2.判断输入的数字是否为中国境内电话号

  1. <input type="text" id="app">
  2. <script>
  3. var reg = /^(086)?1[3-9]\d{9}$/
  4. $("#app").keyup(function(event){
  5. if(event.keyCode==13){
  6. var value = $(this).val();
  7. console.log(reg.test(value));
  8. }
  9. })
  10. </script>

image.png

3.判断输入的密码是否为大写字母加小写字母开头且至少6位数字

  1. <input type="text" placeholder="请输入密码" id="app">
  2. <script>
  3. var reg = /^[A-Z]+[a-z]+\d{6,}$/;
  4. $("#app").keyup(function(event){
  5. if(event.keyCode==13){
  6. var value = $(this).val();
  7. console.log(reg.test(value));
  8. }
  9. })
  10. </script>

image.png

4.提取文字段中的部分组成数组

  1. <p class="">
  2. 导演: 陈凯歌 Kaige Chen&nbsp;&nbsp;&nbsp;主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...<br>
  3. 1993&nbsp;/&nbsp;中国大陆&nbsp;/&nbsp;剧情 爱情 同性
  4. </p>
  5. <script>
  6. var str = $("p").html().trim().split("<br>")[1].trim();
  7. console.log(str);
  8. var reg = /&nbsp;/g
  9. var res = str.replace(reg,"");
  10. var arr = res.split("/")
  11. var last = arr[arr.length-1].split(" ");
  12. arr.pop();
  13. console.log(last);
  14. last.forEach(item=>{
  15. arr.push(item);
  16. })
  17. console.log(arr);
  18. </script>

image.png

5.将地址中的数字每两位一个数组组成2维数组

  1. <script>
  2. var url = "https://movie.douban.com/subject/129205/"
  3. var reg = /\D+/g
  4. var str = url.replace(reg,"");
  5. console.log(str);
  6. var arr = str.split("");
  7. console.log(arr);
  8. var res = []
  9. for(var i=0;i<str.length;i+=2){
  10. var item =str.substr(i,2).split("")
  11. res.push(item);
  12. }
  13. console.log(res);
  14. </script>

image.png