一、正则
    正则基础:正则主题+修饰符
    (1)两种创建方法:

    1. let reg1 = /abc/g, // [abc]是匹配中括号里的字符,不包括数字。
    2. reg2 = new RegExp('abc', 'g') // pattern + modifiers

    (2)正则对象的方法

    1. // (1) test 判断是否匹配
    2. let reg = new RegExp('[abc]','i');
    3. reg.test('123[fdas]') // => true
    4. // (2) exec 检索匹配并返回匹配值与相关信息,没有匹配成功返回null。
    5. reg.exec('[1][23][567]')

    (3)字符串使用正则的方法

    1. // (1) replace
    2. let reg = new RegExp('sb', 'g'),
    3. str = 'sb的js编程功力很深厚';
    4. console.log(str.replace(reg, 'frank')) //可以用正则、也可以用字符串
    5. // (2)search 查找匹配内容的索引
    6. let reg = new RegExp('frank', 'g'),
    7. str = 'frank的js编程功力很深厚';
    8. console.log(str.search(reg) + 1) // => 1

    二、字符串
    (1)endsWith、startsWith判断是否以某个字符串开头结尾

    1. let str = 'frankawsome';
    2. console.log(str.startsWith('frank'), str.endsWith('me')) // => true, true
    1. 2includes判断是否包含相关字符串
    1. let str = 'frankawsome';
    2. console.log(str.includes('some'))
    1. 3padStartpadEnd 补齐方法,改变原字符串<br />参数:a.补齐后长度<br /> b.补齐材料
    1. let str = 'a';
    2. str.padStart(5,'fk')
    3. str.padEnd(5,'fk') // => 'afkfk'

    三、模板字符串
    es6中,对普通字符串的增强,可以作为普通字符串使用,还可以定义多行字符串,还可以在其中引用js变量
    模板字符串用反引号包裹,如果要用到反引号,需要使用反斜杠进行转义

    1. let obj = {name: 'frank', age: 25},
    2. str = `I'm ${obj.name} , \`${obj.age}\` old`;
    1. 1)模板字符串中,**空格符会被保留**,大括号里面可以进行**任意计算,函数执行。**
    1. function tplFun(item){
    2. return `this is a ${item} template string`
    3. }
    4. let str = `description: ${tplFun('inhenced')}`;
    5. console.log(str)
    1. 2)大括号中的非字符串对象会转化为字符串([先转化为对象],调用toString)。<br /> 3)模板字符串嵌套
    1. let data = [{name:'one'},{name:'two'}]
    2. templateStr = `
    3. <table>
    4. ${
    5. data.map(item => `
    6. <tr><td>${item.name}</tr></td>
    7. ` ).join('')
    8. }
    9. <table>
    10. `;
    11. console.log(templateStr);
    12. //这种直接渲染的方式,如果被劫持数据后,会被恶意攻击
    13. //这个时候可以用到标签模板
    1. 4)为了解决数据被劫持产生的恶意攻击,es6提供了标签模板。<br />模板标签类似一个函数。调用方法是标签后面加上模板字符串。<br />函数第一个参数为 一个数组,包含了未被变量替换的字符串片段。<br />后面参数为模板字符串中的变量引用值。<br />通过遍历,过滤变量引用值中的HTML 字符串(将标签<>转义)
    1. function htmlStrReplace(s){
    2. return s.replace(/</g,'$gt;').replace(/>/g,'$lg;')
    3. }
    4. function saferString(strFragments, ...viriablesArr){
    5. console.log('123')
    6. let str = strFragments[0];
    7. viriablesArr.forEach((elem,index)=>{
    8. console.log(elem,index)
    9. str += htmlStrReplace(elem);
    10. str += strFragments[index]
    11. })
    12. return str
    13. }
    14. let obj = {name: '<script>alert("nmsl")</script>'};
    15. let message = saferString`${obj.name} has send you a message`