没关注?伸出手指点这里---
说到js正则表达式,js的字符串就是一个绕不开的话题
字符串是正则表达的是一种实践
字符串String支持一些支持正则表达式的方法,昨天提到的replace就是其中之一
它们分别是:
search()
match()
split()
replace()
search
search 是最简单的
search,参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,如果找不到匹配的子串,返回-1
举一个:(参数是正则表达式)
如果search()的参数不是正则表达式,则首先会通过RegExp构造函数将它转换成正则表达式,search()方法不支持全局检索,因为他忽略正则表达式参数中的修饰符g
举一个:(参数不是正则表达式)
既然返回第一个与之匹配的子串的起始位置,就不可能支持全局搜索,可以理解
match
(带修饰符g)
如果这个正则表达式没有设置修饰符g,match()就不会进行全局检索,它只会检索第一个匹配,但即使match()执行的不是全局匹配,它也返回一个数组,
看一个:
在这种情况下,数组的第一个元素就是匹配的字符串,剩下的元素则是正则表达式中用用圆括号括起来的子表达式,
所以
如果match()返回一个数组a,那么a[0]存放的是完整的匹配,
a[1]存放的是与第一个用圆括号括起来的表达式相匹配的子串,
以此类推,为了和方法replace()保持一致,a[n]存放就是$n的内容
split
字符串的split()很常用了
split() 方法用于把一个字符串分割成字符串数组。
我们经常这么用
它有个反方法join(),是数组的方法,
split()其实是有两个参数的,
第一个是必选项:支持字符串或者正则表达式,从该参数指定的地方分割 当前字符串
第二个是可选项:该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
replace
replace()在
昨天
已经讲过了,简单回顾一下
两个参数:
参数1:可以是字符串,也可以是正则表达式
参数2:可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。
补充:
正则表达式中使用圆括号括起来的子表达式是带有从左到右的索引编号的,而且正则表达式会记
忆与每个子表达式匹配的文本,如果在替换字符串中出现了$加数字,那么replace()将用于与指定的子表达式相匹配的文本来替换这两个字符($+数字)
举个:
实战演练
1、给一个连字符串例如:get-element-by-id转化成驼峰形式。
2、写一个少于 80 字符的函数,判断一个字符串是不是回文字符串
回文串是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
3、js 实现一个函数 获得url参数的值
领取专属 10元无门槛券
私享最新 技术干货