JS09 字符串、正则表达式

1、字符串的使用方法

  • 在底层,字符串都是以字符数组的形式保存的
    • ["h","e","l","l","o"]
    • length 获取字符串的长度
  • charAt()
    • 可以返回字符串指定位置的字符
    • 根据索引获取指定位置的字符
    • 不会影响原字符串
  • charCodeAt() :返回在指定的位置的字符的 Unicode 编码。
  • String.fromCharCode() :可以根据字符编码去获取字符
  • concat() :连接两个或多个字符串
  • indexOf()
    • 从前往后检索字符串是否有指定内容。
    • 如果字符串含有该内容,则会返回其第一次出现位置的索引值
    • 如果没有找到,则返回-1
    • 可以指定第二个参数,来指定开始查找的位置
  • lastIndexOf()
    • 从后向前检索字符串是否有指定内容。
    • 可以指定第二个参数,来指定开始查找的位置(这里是从前往后的位置正数,不是倒数)
  • slice()
    • 可以从字符串中截取指定的内容
    • 不会影响原字符串,而是将截取的内容作为返回值返回
    • 参数:
      • 1、开始位置的索引,包含
      • 2、结束位置的索引,不包含
        • 如果省略第二参数,则会截取后面所有
        • 也可以传递一个负数,从后面截取
  • substring()
    • 可以截取一个字符串
    • 参数:
      • 1、开始位置的索引,包含
      • 2、结束位置的索引,不包含
        • 但是他不接收负数作为参数,如果传递了一个负值,则默认使用0
        • 而且他还会自动调整参数的位置
        • 如果第二个参数小于第一个参数,则自动交换
  • substr()
    • 截取字符串,从起始索引号提取字符串中指定数目的字符。
    • 参数:
      • 1、开始位置的索引,包含
      • 2、第二个参数是截取的长度
  • split()
    • 把字符串分割为字符串数组。
    • 参数:
      • 需要一个字符串作为参数,将会根据该字符串去拆分数组
      • 如果传递空串,则将每个字符拆分为数组中的一个元素
  • toUpperCase() :把字符串转换为大写。
  • toLowerCase() :把字符串转换为小写。
var str = "hello";
console.log(str[3]);
console.log(str.length);

var result = str.charAt(2);
result = String.fromCharCode(0x2849);//表示16进制要以0x开头
result = str.concat("dsfa","asdfasd");//hellodsfaasdfasd
result = str.indexOf("h",3);
console.log(result);

str = "hellodsfasdfsdfertter";
result=str.split("d");
result=str.split("");  //"h", "e", "l", "l", "o", "d", "s", "f", "a", "s", …
console.log(result);  //"hello,", "sfa,s", "fs", "f,ertter"
//把d变成逗号了

2、正则表达式

  • 正则表达式:
    • 邮件的规则:
      • 1、前边可以是乱七八糟
      • 2、跟着一个@
      • 3、后边乱七八糟
      • 4、.com或者其他乱七八糟
    • 正则表达式用于定义一些字符串的规则
      • 计算机可以根据正则表达式,来检查一个字符串是否符合规则
      • 获取字符串中符合规则的内容提取出来
    • 语法:
      • var 变量 = new RegExp(“正则表达式”,“匹配模式”);
    • 使用typeof来检查类型会返回object
    • var reg = new RegExp("a");可以检查字符串中是否含有a
    • 在构造函数中可以传递一个匹配模式作为第二参数
    • 可以:
      • i 忽略大小写(但是如果没有这个匹配模式就不会忽略)
      • g 全局匹配模式
    • 正则表达式的方法:test()
      • 用来检查一个字符串是否符合正则表达式的规则,符合为true,不符合false
    • //创建正则表达式的对象
      var reg = new RegExp("a");
      var str = "a";
      var result = reg.test(str);
      console.log(result);  //true
      console.log(reg.test("dfsa"));  //true
  • 使用字面量来创建正则表达式:
    • 语法 :var 变量 = /正则表达式/匹配模式
    • 但是使用构造函数形式创建的话会更加灵活(可以传递变量)
    • reg =/a/i;
      console.log(result);  //true
      console.log(reg.test("dfsa"));  //true
  • 创建一个正则表达式,检查字符串里面是否有a或b
    • 1、使用|竖线来表示或
    • 2、使用[]号来表示或的关系
    • 3、[a-z]:任意小写字母
    • 4、[A-Z]:任意大写字母
    • 5、[A-z]:任意字母
    • 6、[^ ]:除了括号里面的字母都行
    • reg =/a|b|c|d/i;
      reg=/[a-z]/;
      reg=/c[afd]v/;//固定了前后两个字母,中间的中括号里面任意
      reg=/[^dfsa]/;
      console.log(reg.test("dfsa"));
  • 量词:
    • 通过量词来设置一个内容的出现次数
    • 量词只对它前面的一个内容起作用
      • {n} 正好出现n次
      • {m,n} 出现m到n次
      • {m,}  出现m次以上
      • + 表示至少一个,相当于{1,}
      • * 表示0个以上,相当于{0,}
      • ?表示0或1个 ,相当于{0,1}
      • ^ 表示开头
      • $ 表示结尾
      • ^a$ 表示只有一个a
      • ^a|a$ 表示以a开头和以a结尾
    • 如果在正则表达式中同时是哦那个^和$,则要求字符串必须完全符合正则表达式
    • reg =/a{4}/i;  //aaaa
      reg =/(ab){4}/i;  //abababab
      reg =/ab{4}/i;  //abbbb
      reg =/va{4}v/i;  //vaaaav
      reg =/va{1,4}v/i;
      reg =/^a/;  //检查字符串是否以a开头
      reg =/a$/;  //检查字符串是否以a结尾
      reg =/^a|a$/;  //以a开头和以a结尾
      reg =/^a$/;  //只有一个a
      document.write(reg.test("adfsa"));
  • 转义字符:
    • 在正则表达式中使用\来作为转义字符
      • . 点表示任意字符
      • 注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中的转义字符
      • 所以如果使用\,则需要\\来代替
        • \w :任意字母数字
        • \W :除了字母数字
        • \d :任意数字
        • \D :除了数字
        • \s :空格
        • \S :除了空格
        • \b :单词边界(\bchild\b,表示child是一个独立的单词)
        • \B :除了单词边界
    • var reg = /\./;
      document.write(reg.test("sdafasdfa"));
      reg = /\bchild\b/;
      console.log(reg.test("hellochildren"));
          //接收一个用户输入
      var str ="          hello             ";
          //去除字符串前后的空格,使用“”来替换空格,去空格都是去前后保留中间的
      str = str.replace(/\s/g,"");
      	//去除开头的空格
      str = str.replace(/^\s*/g,"");
      	//去除结尾的
      str = str.replace(/\s*$/g,"");
      str = str.replace(/^\s*|\s*$/g,"");
      console.log(str);

3、字符串和正则表达式相关的方法

  • split
    • 把字符串分割为字符串数组。
    • 可以产地一个正则表达式拆分
    • 这个方法即使不指定全局匹配,也会默认全局匹配
  • search
    • 可以搜索字符串中是否含有指定的内容
    • 他如果搜索到指定内容,则会返回第一次出现的索引,如果没有检索到则返回-1
    • 可以接收一个正则表达式的内容,然后根据正则表达式去检索字符串
    • 只会查找第一个,即使设置全局匹配也没用
  • match
    • 可以接收一个正则表达式的内容,然后从一个字符串中将符合条件的内容提取出来
    • 默认情况,我们的match只会找到第一个符合要求的内容,找到以后就停止检索
      • 我们可以通过正则表达式为全局匹配模式,这样就会匹配到所有内容
    • 它会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
  • replace
    • 可以将字符串中指定的内容替换为新的内容
    • 参数:
      • 1、被替换的内容
      • 2、新的内容
    • 默认只会替换第一个
    //split
var str = "1a2b3c4d5e6f7";
    //希望可以根据任意字母拆分
var result = str.split(/[A-z]/);
console.log(result);

    //search
str = "1a2,1324,152,6f7";
result = str.search(/1[adf3]2/);//索引0
console.log(result);

    //match
str = "1a2b3gdfgc4d5e6f7dfgadfg44jkrq";
result = str.match(/[A-z]/gi);
console.log(result);
console.log(Array.isArray(result));

    //replace
result = str.replace(/a/gi,"@@@");
console.log(result);

正则表达式的小练习

<script type="text/javascript">
	/*
	练习一:创建正则表达式,用来检查一个字符串是否是一个合法的手机号
		手机号的规则:1 3 453454268(11位)
			1、以1开头
			2、第二位3~9任意数字
			3、三位以后任意数字9个

			^1 [3-9] [0-9]{9}$
	 */
	var phoneStr = "13567853467";
	var phoneReg = /^1[3-9][0-9]{9}$/;
	document.write(phoneReg.test(phoneStr)+"<br/>");

	/*
	练习二:电子邮件
		sdfsad@sdfa.com.cn
		规则:
			任意字母数字下划线 .任意字母数字下划线 @ 任意字母数字 .任意字母(2~5位) .任意字母(2~5位) (可选)
			\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 = "sdfsad@efd.com.123";
	document.write(emailReg.test(email));
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值