正则表达式与字符串(JS)

字符串的方法

  • 底层字符串是以字符数组的形式保存的

length属性 可以用来获取字符串的长度
charAt() 可以返回字符串中指定位置的字符(根据索引获取指定位置的字符)
charCodeAt() 获取指定位置字符的字符编码(Unicode编码)
String.formCharCode() 可以根据字符编码去获取字符
concat() 可以用来连接两个或多个字符串(作用与 + 一样)
indexOf() - 该方法可以检索一个字符串中是否含有指定内容
- 如果字符串中含有该内容,则会返回其第一次出现的索引
如果没有找到指定的内容,则返回 -1
- 可以指定一个第二参数指定开始查找位置
lastIndexOf() - 用法与indexOf()一样,也可以指定开始查找的位置
- 不同的是indexOf是从前往后找,而lastIndexOf从后往前找
slice() - 可以从字符串中截取指定的内容
- 不会影响原字符串,而是将截取到的内容返回
- 参数:
1. 开始位置的索引(包括开始位置)
2. 结束位置的索引(不包括结束位置)
如果省略第二个参数,则会截取到后边所有的
可以传递一个负数作为参数,负数将会从后边计算
substring() - 可以用来截取一个字符串slice()类似
- 参数:
1. 开始位置的索引(包括开始位置)
2. 结束位置的索引(不包括结束位置)
- 不同的是这个方法不能接受负值作为参数,如果传递了一个负值,则默认使用0
- 并且该方法会自动调整参数的位置,如果第二个参数小于第一个,则自动交换
substr() - 用来截取字符串
- 参数:
1. 截取开始位置的索引
2. 截取的长度
split() - 可以将一个字符串拆分为一个数组
- 参数:
需要将一个字符串作为参数,将会根据该字符串去拆分数组
如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素
toUpperCase() - 将一个字符串转换为大写并返回
toLowerCase() - 将一个字符串转换为小写并返回

        var str = "hello atguigu"
        var result = str.charAt(6);//等同 str[6];
        
        result = str.charCodeAt(0);
        console.log(result);//返回 h 的字符编码 72
        
        result = String.fromCharCode(72);
        console.log(result);//返回 h
        
        result = str.concat("你好","再见");
        console.log(result);//返回 "hello atguigu你好再见"
        
        result = str.indexOf("a");
        console.log(result);//返回6 指索引为6的位置为A
        result = str.indexOf("l",3);
        console.log(result);//返回3 指索引为3的位置第二个l
        
        result = str.lastIndexOf("u");
        console.log(result);//从后往前返回第一个u 指索引为12
        result = str.lastIndexOf("u",10);
        console.log(result);//从后往前返回第二个u 指索引为9
        
        str = "abcdefghij";
        result = str.slice(0,2);
        console.log(result);//返回 "ab"
        result = str.slice(1,-1);
        console.log(result);//返回 "bcdefghi"
        
        result = str.substring(1,-1);
        console.log(result);//返回 "a"
        
        str = "abc,def,ghi,jkl";
        result = str.split(",");
        console.log(Array.isArray(result));//返回 "true" 
        console.log(result[0]);//返回 "abc"
        
        str = "abcdefg";
        result = str.toUpperCase();
        console.log(result);//返回 "ABCDEFG"
        result = str.toLowerCase();
        console.log(result);//返回 "abcdefg"

字符串和正则相关的方法

split()

  • 可以将一个字符串拆分为一个数组
  • 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
  • 这个方法即使不指定全局匹配,也会全都插分

search()

  • 可以搜索字符串中是否含有指定内容
  • 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
  • 它可以接受一个正则表达式作为参数,然后根据正则表达式去检索字符串
  • search()只会查找第一个,即使设置全局匹配也没用

match()

  • 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
  • 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
    我们可以这只正则表达式为全局匹配模式,这样就会匹配到所有的内容
    • 可以为一个正则表达式设置多个匹配模式,顺序没有要求
  • match()会将匹配到的内容封装到一个数组中返回,

replace()

  • 可以将字符串中指定内容替换为新的内容
  • 参数:
    1. 被替换的内容,可以接受一个正则表达式作为参数
    2. 新的内容
  • 默认只会替换一个
        var str = "1a2b3c4d5e6f7";
        var result = str.split("c");
        console.log(result.length);//2
        console.log(result);// "1a2b3,4d5e6f7"

        //根据任意字母来讲字符串拆分
        result = str.split(/[A-z]/i);
        console.log(result);// "1,2,3,4,5,6,7"


        str = "hello abc hello aec afc"
        result = str.search("abc");
        console.log(result);//6
        result = str.search("aec");
        console.log(result);//16
        result = str.search("abcd");
        console.log(result);//-1

        //搜索字符串中是否含有 abc 或 aec 或 afc
        result = str.search(/a[bef]c/);
        console.log(result);// 6 如果没有abc 找aec 返回12;


        str = "1a2b3c4d5e6f7A8B9C";
        result = str.match(/[A-z]/);
        console.log(result);//a
        result = str.match(/[A-z]/ig);
        console.log(result);//"a,b,c,d,e,f,A,B,C"

        console.log(Array.isArray(result));//true
        console.log(result[1]);//b
        

        str = "1a2a3a4d5e6f7A8B9C";
        result = str.replace("a","@_@");
        console.log(result);//a
        result = str.replace(/a/ig,"@_@");
        console.log(result);//"1@_@2@_@3@_@4d5e6f7@_@8B9C""
        result = str.replace(/[A-z]/ig,"");
        console.log(result);//"123456789"

正则表达式

  • 正则表达式用于定义一些字符串的规则
  • 计算机可以根据正则表达式,来检查一个字符串是否符合规范,并获取将字符串中符合规则的内容提取出来
  • 创建正则表达式的对象
    1. 使用构造函数创建正则表达式
    语法:
    var 变量 = new RegExp("正则表达式","匹配模式")
    使用typeof检查正则对象,会返回object
    var reg = new RegExp("a");这个正则表达式可以来检查一个字符串是否含有a
    - 在构造函数中可以传递一个匹配模式作为第二个参数
    可以是
    i:忽略大小写
    g:全局匹配模式
    注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符
    如果要使用 \ 则需要使用 \\ 来代替
    2.使用字面量来创建正则表达式
    语法:var 变量 = /正则表达式/匹配模式;
    使用字面量的方式创建更加简单,但使用构造函数创建更加灵活
    使用 | 表示或者的意思
    [] 里的内容也是的关系
    - [a-z] 任意小写字母
    - [A-Z] 任意大写字母
    - [A-z] 任意字母
    - [0-9] 任意数字
    [^ ] 除了
  • 正则表达式的方法:
    test()
    • 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则
      如果符合则返回true,否则返回false
        // 使用构造函数创建正则表达式
        var reg = new RegExp("a","i");
        var str = "a";
        console.log(reg.test(str));//返回 true
        console.log(reg.test("bcbd"));//返回 false
        console.log(reg.test("Abcbd"));//返回 true
        
        //使用字面量来创建正则表达式
        reg = /a/i;
        console.log(typeof reg);//返回 "object"
        console.log(reg.test("abc"));//返回 true
        
        //创建一个正则表达式,检查一个字符串中是否有a或b
        reg = /a|b/;
        console.log(reg.test("cd"));//false
        console.log(reg.test("acd"));//true
        
        //创建一个正则表达式检查一个字符串中是否有字母
        reg = /[A-z]/i;
        console.log(reg.test("h"));//true
        
        //检查一个字符串中是否含有 abc 或 adc 或 aec
        reg = /a[bde]c/;
        console.log(reg.test("aeec"))//false
        
        reg = /[^0-9]/;
        console.log(reg.test("123456"));//false
        console.log(reg.test("123a456"));//true

正则表达式的语法

量词

  • 通过量词可以设置一个内容出现的次数
  • 量词只对它前边的一个内容起作用

{n} 正好连续出现n次
{m,n} 出现m~n
{m,} m次以上
+ 至少一个,相当于{1,}
* 0个或多个,相当于{0,}
? 0个或1个,相当于{0,1}
^ 表示开头
$ 表示结尾
- 如果在正则表达式中同时使用^ $,则要求字符串必须完全符合正则表达式
. 表示任意字符
- 在正则表达式中使用\作为转义字符
\. 来表示单纯的.
\\ 表示
\w 任意字母、数字、_ [A-z0-9_]
\W 除了字母、数字、_ [^A-z0-9_]
\d 任意的数字[0-9]
\D 除了数字[0-9]
\s 空格
\S 除了空格
\b 匹配单词边界
\B 匹配非单词边界

        //创建一个正则表达式检查一个字符串中是否含有连续多个a
        var reg = /a{5}/;
        console.log(reg.test("aaaaabc"));//true
        reg = /ab{3]/;
        console.log(reg.test("ababab"));//false
        console.log(reg.test("abbb"));//true
        reg = /(ab){3}/;
        console.log(reg.test("ababab"));//true
        
        // 检查一个字符串中是否以a开头
        reg = /^a/;// 匹配开头的a
        reg = /a$/;// 匹配结尾的a
        reg = /^a$/;//必须只能是a
        
        reg = /\\/;
        console.log("b.\\");//返回 b.\
        console.log(reg.test("b.\\"));//true
        
        //创建一个正则表达式检查一个字符串中是否含有单词child
        reg = /\bchild\b/;
        console.log(reg.test("hello children"));//false
        console.log(reg.test("hello child"));//true
        
        
        // 去除掉字符串中的空格
        // 去除空格就是使用 "" 来替换空格
        var str = "     hello     ";
        console.log(str);// "     hello     "
        str = str.replace(/\s/,"");
        console.log(str);// "    hello     "
        str = str.replace(/\s/g,"");
        console.log(str);// "hello"   // 会替换所有的空格
        
        str = "     he  llo     "
        // 去除开头的空格
        str = str.replace(/^\s*/,"");
        // 去除结尾的空格
        str = str.replace(/\s*$/,"");
        // 去除前后的空格
        str = str.replace(/^\s*|\s*$/g,"");
        console.log(str);// "he  llo"

Guess you like

Origin blog.csdn.net/KennGum/article/details/106997325