正则表达式

162 阅读1分钟

正则表达式练习网站:regexlearn.com/zh-cn/learn…

文档:www.runoob.com/regexp/rege…

引入

现在有一个字符串:cat(Shanghai),表示这是一个在上海的猫猫,我们想获取这个location,通常,会用到正则表达式,是这样写的:

const location = originString.split(/[()]/)[1]

这一串 /[()]/ 是什么意思呢? / /,表示正则表达式的开始和结束;[] 表示可以匹配括号里面的任何内容,比如[0-9],[a-z]。那么上述的意思是匹配到第一个括号和第二个括号中间的内容。

规则

/ / 匹配连续字符

image.png

/[ ]/ 匹配单个字符

image.png

.匹配任意字符
  • 在[ ]外使用,表示匹配所有单个字符

image.png

  • 在[ ]外使用,表示匹配.时用\ .

image.png

  • 在[ ]内使用,表示匹配.时用[.]

image.png

* 匹配多个字符

image.png

image.png

这样一来,就可以输出连续字符串,而不用进行拼接。

\s匹配不可见字符,\S匹配可见字符

正则表达式的方法

reg.exec()

输入字符串。返回内容为 Null 或者 数组。 其中,res[0]的结果为匹配成功的字符串。

str.match()

输入正则表达式。

应用

拆分html文件为js、css、html文件
  • 对html文件,进行读文件操作,并且匹配相应的js和样式,进行写文件操作单独提取出来
regScript = /<script>[\s\S]*<\/script>/         // script标签中斜线内容需要进行转义
  • 把原本的html文件中的js和样式由内联形式换为外联形式

image.png

将html转义为纯文本
function htmlEscape(htmIStr) {
return htmlStr.replace(/<|>|"|&/g, (match) => {
    switch (match) {
        case '<':
            return '81t;';
        case '>':
            return '&gt;
        case '"'
            return '&quot;'; 
        case '&':
            return '&amp';
    )
}