ES6浅谈--字符串新方法,正则扩展,数值扩展
新方法:
1.repeat(),表示原字符串重复n次,n为参数,小数取整,无穷报错,负数报错,大于-1取0(空),NaN取0,字符串转成数字。
2.padStart(),padEnd(),补全长度,第一个参数为补充长度,第二个参数为补全字符内容,省略第二个参数则默认以空格补全。常用于补全指定位数和提示字符串格式。
3.trimStart(),trimEnd(),删除实际内容前和后的空格。对换行符和不可见空白符号都有效。
正则:
1.可以在new RegExp时第二个参数(修饰符)和第一个参数(正则表达式)格式不同,如第一个参数为正则(有修饰符),第二个为字符串。第一个参数内的正则的修饰符会被第二个参数的修饰符覆盖。
2.u修饰符,可以识别unicode字符(后面为配合使用):点字符,匹配任意字符,加u可以识别码大于0xFFFF的字符。{}内表示u码量词,预定义也是需要加u识别大于0xFFFF的字符,加u还可以区分出字符相近的状况,还可以对没有转义的字符(\,这样)报错。
3.y修饰符,区别于g修饰符。g修饰符没有位置要求,在第一次匹配之后可以在后面的字符任意选择匹配。y修饰符必须在剩余字符串头部进行匹配。使用y修饰符的时候,在用replace()方法,参数是一个正则:
const REGEX = /a/gy; ‘aaxa‘.replace(REGEX, ‘-‘) // ‘--xa‘
这里只会替换部分的原因是aaxa中间有个x使y修饰符在找到第二个a之后找第三个x就直接停止匹配。y修饰符必须与g修饰符连用才能返回所有匹配。另外y修饰符可以对非法匹配报错直接跳出匹配,原理就是头部匹配。
4.点操作符可以通过s修饰符完成对任意字符匹配,包括换行符等。
5.先行断言”指的是,x
只有在y
前面才匹配,必须写成/x(?=y)/
。比如,只匹配百分号之前的数字,要写成/\d+(?=%)/
。“先行否定断言”指的是,x
只有不在y
前面才匹配,必须写成/x(?!y)/
。比如,只匹配不在百分号之前的数字,要写成/\d+(?!%)/
。“后行断言”正好与“先行断言”相反,x
只有在y
后面才匹配,必须写成/(?<=y)x/
。比如,只匹配美元符号之后的数字,要写成/(?<=\$)\d+/
。“后行否定断言”则与“先行否定断言”相反,x
只有不在y
后面才匹配,必须写成/(?<!y)x/
。比如,只匹配不在美元符号后面的数字,要写成/(?<!\$)\d+/
。
数值:
1.用0o,0b(字母可以大写)分别表示八进制和二进制,严格模式会报错,转换成10进制用Number()方法。
2.Number.isFinite(),Number.isNaN(),Number.parseInt/parseFloat()方法与之前方法大体无区别,唯一区别是转换值必须是Number类型,转换值为参数,这么做的目的是为了让语言模块化。
3.Number.isInteger(),检测数值是否为整数,15.0也算整数,true不是数值不算整数,小数点后16位会被舍弃导致16位后的数值不是0会被忽略,然后识别成整数,小于可识别数也会被认为是0即整数。
4.Number.EPSILON,极小常量,一般用于检测误差是否在允许范围之内,比如,误差范围设为 2 的-50 次方(即Number.EPSILON * Math.pow(2, 2)
)。
5.Number.isSafeInteger(),判断整数是否在安全整数内(2的53次方),实质是和边界值进行比较。
今天就到这先。