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对象:
封装一个正则表达式,提供用正则表达式进行验证和查找的方法。
如何创建:
- 直接量: var reg=/正则/gi;
- 示例化对象: var reg=new RegExp(“正则”,“gi”)