Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

字符串模板与正则

  看到 Python 中的各种字符串前面加 u 加 r 的,一直觉得很恶心,后来 ES6 中的字符串模板也提供了这种调用方式我才渐渐开始明白,也许这才是大自然的规律吧?最近经常遇到使用正则匹配 URL 的需求,但是里面的一堆转义让我抓狂,字符串模板的标签是不是能解决这个问题呢?
  JavaScript 中的正则是以「/」包裹的串,如果正则中需要匹配「/」就得加上「\」来转义。然而 URL 中存在大量的「/」,这时候正则写起来就非常恶心,比如要匹配这个博客的地址就得这么写 /^https:\/\/www\.web-tinker\.com/.test(location.href);   域名前面的两个「/」都需要转义更何况后面的没一级目录上都有「/」,于是我经常这么写 new RegExp('^https://www\\.web-tinker\\.com').test(location.href);   这样就不用再对「/」做转义了,但是对原有的「\」,由于是字符串需要做一次转义。上面这一坨看起来也是非常恶心的,那么我们换成字符串模板试试? new RegExp(`^https://www\.web-tinker\.com`).test(location.href);   于是一个斜杆就可以搞定,这是我目前能想到的转义最少的方式了。但对于这整个东西我还是很不满意,比如前面的 new RegExp,是不是可以省去呢?于是我这么玩 var r = (...args) => new RegExp(String.raw(...args)); r`^https://www\.web-tinker\.com`.test(location.href);   定义一个名为 r 的字符串 tag,在字符串模板前加这个 tag 把字符串装换成正则后再使用,这样用起来就非常方便。
  其实我现在也不知道这种用法到底是好是坏,反正感觉逼格挺高的!
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^