js字符串和正则操作

字符串的生成转换

可以将任何类型的数据都转化成字符串,具体有三种方式

var num=19;
var mystr=num.toString();
var mystr=String(num);
var mystr=""+num;

字符串转化成其他类型
js提供了parseInt()和parseFloat()两个转换函数,Number也可以实现转化

parseInt("1234abc");//1234
parseInt("0xA");//10
parseInt("22.5");//22
parseInt("red");NaN
parseInt("10",2);//2
parseInt("10",8);//8
parseInt("10",10);//10
parseInt("AF",16);//175
parseFloat("1234abc");//1234.0
parseFloat("0xA");//NaN
parseFloat("22.5");//22.5
parseFloat("22.34.5");//22.34
parseFloat("0908");//908
parseFloat("red");//NaN
Number(false);//0
Number(true);//1
NUmber(undefined);//NaN
Number(null);//0
Number("5.5");//5.5
Number("56");//56
Number("5.6.7");//NaN
Number(new Object());//NaN
Number(100);//100

字符的操作

var str="i,love,you,do,you,love,me";
var thechar=str.charAt(8);//获取指定索引上的字符o
var thacharcode=str.charCodeAt(8);//获取指定索引上的字符编码111

字符串的增删改查

//替换
name = "hello world ".trim();//trim()删除字符串的前后空格
name = name.replace("hel","hhh");//replace替换第一个hel成hhh
name = name.replace(/eng/g,"hhh");//replace接受正则表达式,/g替换全部

//查询
var beginindex=name.indexOf("t",name.length-10);//indexOf和lastIndexOf查询字符串的位置,第二个参数表示从哪个索引开始向后搜索。length方法是取字符串的长度,如果没有查询到改字符返回-1.
var endindex=name.laseIndexOf("e",0);

//截取
var substr=name.slice(1,5);//截取子字符串,左闭右开。
name1=name.substring(beginindex,endindex);//slice,substring参数首尾下标,substr为起点下标和长度。都不改变源字符串。
name1=name.substr(-4);//传入负值时,slice将负值加上字符串长度,substr将第一个负值加上字符串长度,第二个负值转化为0,substring都将赋值转化为0.
//substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。

//拼接
name1=name+"eya"+1;//使用加号拼接字符串和数据成一个新的字符串
name1=name.concat("yes");//concat函数拼接字符串

//大小写转换
var lowcasestr=name.toLowerCase();//全部转化为小写
var upcasrstr=name.toUpperCase();//全部转化为大写

当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。

字符串的比较

比较两个字符串,比较是按照字母表顺序比较的

var one="chicken";
var two="egg";
var first=one.localeCompare(two);//-1表示小于
one.localeCompare("chicken");//0表示等于
two.localeCompare("apple");//1表示大于

字符串分割

var mystr="i,love,you,do,you,love,me";
var substrArray=mystr.split(",");//将字符串转化成数组
var arrayLimited=mystr.split(",",3);//split的第二个参数,表示返回数组的最大长度

正则法则

正则表达式=/pattern/flags,其中flags中的g表示全部,i表示不区分大小写,m表示匹配多行,pattern包含([{^$|)?*+.]}元字符,如果匹配的字符串中包含元字符,使用\转义。

var pattern1=/(.)u/gi;//正则表达式,标志没有,可为空,也可以使用var pattern1= new RegExp("pattern","flags")
if(pattern1.test(name)){
    RegExp.input;//原始字符串
    RegExp.leftContext;//捕捉到的位置的左边的字符串
    RegExp.rightContext;//捕捉到的位置的右边的字符串
    RegExp.lastMatch;//返回最近一次与整个正则表达式匹配的字符串
    RegExp.lastParen;//返回最近一次捕捉的字符
    pattern1.global;//返回正则是否包含全局标志g
}
var matches=pattern1.exec(name);//查询符合要求的字串。maches.index表示查询到的其实下标,matches.input表示输入的字符串,pattern1.lastIndex表示查询到的结束下标,matches[0]表示查找到的第一个匹配项,若匹配为全局模式,则每次返回下一个匹配项。

正则表达式字符

\ 做为转义,即通常在“\”后面的字符不按原来的意义解释,如/b/匹配字符"b",当b前面加了反斜杠后/\b/,转义为匹配一个单词的边界。或者对正则表达式功能字符的还原,如*匹配它前面的元字符0次或者多次,/a*/将匹配a,aa,aaa,加入“\”后,/a\*/将匹配a*
^匹配一个输入或者一行的开头,/^a/匹配“an A”而不匹配“An a”
$匹配一个输入或者一行的结尾,/a$/匹配“An a”,而不匹配“an A”
*匹配前面的元字符0次或者多次,/ba*/将匹配ba,baa,baaa
+匹配前面的元字符1次或者多次,/ba+/将匹配ba,baa,baaa
?匹配前面的元字符0次或1次,/ba?/将匹配b,ba
(x)匹配x保存x在名为$1...$9的变量中
x|y匹配x或y
{n}精确匹配n次
{n,}匹配n次以上
{n.m}匹配n到m次
[xyz]字符集,匹配这个集合中的任意一个字符(或元字符)
[^xyz]不匹配这个集合中的任意一个字符
[\b]匹配一个退格符
\b匹配一个单词的边界
\B匹配一个单词的非边界
\cX X是一个控制符,/cM/匹配ctrl M
\d匹配一个数字符,/\d/=/[0-9]/
\D匹配一个非数字符,/\D/=/[^0-9]/
\n匹配一个换行符
\r匹配一个回车符
\s匹配一个空白字符
\S匹配一个非空白字符
\t匹配一个制表符
\v匹配一个垂直制表符
\w匹配字母数字下划线
\W匹配非字母数字下划线

字符串原型

通过修改字符串的原型,可以为所有字符串添加公共函数

String.prototype.startwith=function(text){
  return this.indexOf(text)==0;
}//设置字符串引用的原型,为String类型添加方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容