String的API和正则的API

  • String的API:
  • 正则的API
  • 仅判断是否包含: var i=str.search(/reg/)
  • 替换:
  • 切割:
  • RegExp对象:


String的API:

一、String对象与数组的不同:
	1、数组可以随意修改原数组,但是字符串是只读字符数组,一旦创建内容不可修改
	2、数组中不修改原数组的api都可以用
	3、类型不同:数组是Array-->object; 字符串是string
	特点:
		1、String所有的API都无权修改字符串,只能返回新字符串!
		2、数组的不对其改变的API,String也都可以用!
二、String的API的一些常用的
		1、获取指定位置的字符
				charAt();获取自定位置字符的Unicode码,默认获取的位置是0
				charCodeAt(1);获取指定位置字符的Unicode码 ,默认获取的位置是0
				这里的这两个是差不多的
		2、大小写转换
			转化为大写英文字母:toUpperCase();
			转化为小写英文字母:toLowerCase();
		3、将Unicode编码反转回文字 
			返回值为文字
			String.fromCharCode(97);这里的括号里面的值是Unicode编码
		4、截取字符串
			slice(2,5);
				1、选取子字符串,不支持负数参数
				2、可省略第二个参数,表示一直选取到结尾
		5、substring(int beginIndex, int endIndex)
				返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始, endIndex:到指定的 endIndex-1处结束。
				示例:
"hamburger".substring(3,8) returns "burge"

"smiles".substring(0,5) returns "smile"
参数:
			beginIndex - 开始处的索引(包括)。
			endindex 结尾处索引(不包括)。
			返回:
			指定的子字符串。
			抛出:
			IndexOutOfBoundsException - 如果 beginIndex 为负,或length大于字符串长度。
	6、indexof()是用来查找关键词出现的位置
			返回值:
					1、如果找到了要找的,返回值是对应的下标
					2、如果没有找到的是具体的下标,否则返回-1
			使用方法:
					1、默认从0开始,默认仅能查找第一次出现的位置;可从指定位置开始查找
					2、数组中也有indexOf("查找内容")的方法

正则的API

仅判断是否包含: var i=str.search(/reg/)

reg表示一个正则,用//括起来 在str中查找第一个和reg匹配的关键词, 找到返回位置下标,没找到,返回-1 无法设置开始位置

获得所有关键词的内容: var arr=str.match(/reg/gi);

【返回的值是一个数组】 如果找全部:第二个/后加g 如果忽略大小写: 第二个/后加i
     无法获得每个关键词的位置

替换:

找到str中的和reg匹配的关键词,替换为新内容 str=str.replace(/reg/gi,“替换内容”);

无权修改原字符串,只能返回新字符串
     默认也只能替换第一个,加g后才能替换所有
格式化: 将正则表达式匹配的内容,替换为新的格式
    2步: 1. 用正则表达式将要格式化的字符串分组

2. 在replace的第二个参数中使用$n代替分组匹配的内容,组成新格式。

用正则将匹配内容分成几组,$1表示第一句内容,$2表示第二组。。。类推;再使用replace将添加的内容加上

var pid="110102198312262111";
    var birth=pid.slice(6,6+8);               //19831226
    
    var reg=/(\d{4})(\d{2})(\d{2})/;         //Step1: 使用正则将原字符串分组
                                         //Step2: 将原字符串,替换为新的格式    
    birth=birth.replace(reg,"$1年$2月$3日");  //$1=1983  $2=12  $3=26
    console.log(birth);                  //1983年12月26日
切割:
var arr=str.split(/reg/);   将字符串按照正则匹配进行切割,返回数组

即查找关键词内容,又查找关键词位置: 返回数组
var arr=reg.exec(str);
    强调:如果查找全局,reg要加g
    arr.index :发现关键词的位置
    arr[0] :关键词的内容

执行过程: 从str的开始位置,找下一个匹配的关键词 ,将找到的一个关键词放入arr中第1个元素 ,为arr添加index属性,标识当前关键词的位置
    如何使用:只要使用循环反复调用即可 ,exec可自动修改RegExp对象的lastIndex属性,RegExp的lastIndex属性定义了下次开始位置 ,如果没找到,返回null

var html='<link href="css/bootstrap.css"/><a class="curr" href="http://tmooc.cn">go to tmooc</a><a name="top"></a><a href="http://tedu.cn" title="tedu">go to tedu</a><h1>标题1</h1>';
    var reg=new RegExp("<a\\s+[^>]*href=[\"|\']([^\'\"]+)[\"|\'][^>]*>.*?</a>","gi")
    var arr=null;
    while((arr=reg.exec(html))!=null){      //反复调用reg的exec方法,传入参数html,将结果保存到arr中,再判断不等于null
        console.log("在位置 "+arr.index +" 发现: "+arr[0]);
    }

验证字符串格式 var bool=reg.test(str);

返回值: 验证通过,返回true,否是返回false 【强调:reg都要前加^,后加$】

var reg=/^(?![a-z0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,16}$/;
 //反复调用reg的test方法,请用户输入密码直接作为参数,只要验证*不*通过,          就继续循环
    while(!reg.test(prompt("输入新密码"))){

        alert("密码强度不够!");
    }//(循环结束)
    alert("密码修改成功");//提示密码修改成功

RegExp对象:

封装一个正则表达式,提供用正则表达式进行验证和查找的方法。

如何创建:

  1. 直接量: var reg=/正则/gi;
  2. 示例化对象: var reg=new RegExp(“正则”,“gi”)