JavaScript学习笔记30
Posted -恰饭第一名-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript学习笔记30相关的知识,希望对你有一定的参考价值。
var str = “aaaa”; //想要匹配四个一样 xxxx 的
var reg = /( a )/g;//这个括号还有一个子表达式的意思,正常来说括号写了没有用,也没影响,但是在特殊情况,当你把式子当特殊括起来以后,这个括号会记录里面匹配的内容,记录完以后利用\\几可以反向引用出来,如下
var reg = /( a )\\1/g;//这个\\1 意思是反向引用第一个子表达式里面的内容,这里的意思是匹配 a 和后面同样的 a
如果换成 var reg = /( \\w )\\1/g;//意思就变成了\\w 匹配出来的东西,后面要 copy 一个一样的
想要匹配四个一样的写法如下:
现在想匹配出 aabb,应该怎么写?/(\\w)\\1(\\w)\\2/里面\\1 是反向引用第一个表达式里面的内容,(\\w)\\2 是反向引用第二个表达式里面的内容。
下面多出了第一个字表达式和第二个子表达式的内容,而且是正式的数据位,虽然是类数组,但是能当数组用。
就算不加 g,也会这样匹配出来,只是不改变 index
match 找到一个或多个正则表达式的匹配。
但是加 g 了以后,只把匹配了多少个给你
例 search 检索与正则表达式相匹配的值。
返回的不是-1 都匹配成功了,返回的是匹配的这个东西的位置。
加不加 g,没有区别
如果匹配不到就返回-1
split 把字符串分割为字符串数组。
按双重复的拆分(加不加 g 返回都一样)。下面这种失败
如果写()子表达式就会把子表达式的东西返回,如果不写就不能反向引用了
replace 替换与正则表达式匹配的子串。 非常实用
上面是非正则表达式的缺点,想要返回 bb,但是返回的是 ba。没有返回全局的能力。上面是非正则表达式的缺点,想要返回 bb,但是返回的是 ba。没有返回全局的能力。
replace 的精华是正则表达式
例:想把 aabb 匹配出来,再倒过来
方法一:
上面 str.replace(reg,””)替换的信息不管写什么都要写成字符串,字符串里面“$1”,代表第一个子表达式的内容,“$2”代表第二个子表达式的内容
方法二:
写成 function,而 function(, ,){}里面传的第一个参数是正则表达式匹配的全局(结果)(可随便起名),第二个参数是第一个表达式匹配的内容,第三个参数是第二个表达式匹配的内容(写 return$1$2 不适合语法)
把 the-first-name 变成小驼峰式写法 theFirstName
思路:是把-f 变成 F,把-n 变成 N,先匹配再转换
上面的 function 匹配了多少次,就有多少次 function 的执行,而上面的 reg 找了两次,找一次匹配一次
正向预查/正向断言
?=n 匹配任何其后紧接指定字符串 n 的字符串。
例我要选一个 a,后面跟着 b,就是正向预查/正向断言
/a(?=b)/意思是 a 后面跟着 b,但是 b 不参与选择
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。后面不跟着 n
例 后面不跟着 b 的 a
贪婪匹配,变成非贪婪匹配(能少就不多),在量词后面加个?
例 var reg = /a{1,3}?/g; //这个 1 到 3,意思是有 1 就不取 2,3
思考:如果在量词是??
例 var reg = /a??/g; //??第一个问号代表量词,第二个问号叫取消他的匹配,第一个问号是 0-1 的意思,加个问号就是能取 0 就不取 1
*?意思是能取 0 就不取多
注意:
1、想匹配空格,直接写 就可以了
2、想把选中的字符替换成$
,直接写$
是不行的,需要加上转义字符$
由于在替换文本里$
有了特殊的含义($
代表反向引用),如果想要是替换$
这个字符
的话,需要写成$$
,充当成转义字符
3、正则表达式要匹配一个反向引用的东西,写\\
4、在正则表达式里面要匹配问号?写\\? 其余*±()星号加号减号括号都类似
下面是想去重,变成 abc,先匹配一串,再取一
百度招聘 14 年最后一题:
给 var str = “100000000000”; 这个数字科学计数法,每隔三位打个点
思路:找规律,从后往前查,每三位打个点,换个空进去【什么样的空?后面的数一定是 3 的倍数,(\\d{3})+是 3 的倍数位个数字,这里面的东西一到多个,第一个/后面的空后面加上正向预查,后面是 3 的倍数位个数字,$以什么结尾】空的后面跟着 3 的倍数位个数字并且以这个结尾。\\B 非单词边界
以上是关于JavaScript学习笔记30的主要内容,如果未能解决你的问题,请参考以下文章
Xitrum学习笔记08 - JavaScript and JSON
精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解