问答

一个正则看不懂

作者:admin 2021-04-30 我要评论

var reg = /callback=([^]+)/var url = 'http://127.0.0.1:3000/api?callback=foo'var ret = url.match(reg)[1] 这里的目标是要匹配到url里面的foo,这个正则没看...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
var reg = /callback=([^&]+)/
var url = 'http://127.0.0.1:3000/api?callback=foo'
var ret = url.match(reg)[1]

这里的目标是要匹配到url里面的foo,这个正则没看懂为什么这样写,哪位大神帮我看一下这个是怎么实现的,/callback=([^&]+)/这个正则完全不知道要表达什么,谢谢!

我试了一下match这个方法:
image.png
发现怎么打印了一推东西出来?
image.png
这个match方法不应该只返回一个字符串吗,怎么会返回一个数组呢

我查了一下正则的教程,还是不太懂T.T

###

那说明你查的地方不对(笑)

https://developer.mozilla.org...

可见 match 有三种返回情况,匹配不到时为 null,匹配到时为数组,且根据正则是否带 g 标志,还有不同
但唯独不会只返回一个字符串……

对于你手上的正则,没有 g 标志,则返回数组中,0 代表字符串中匹配到的全部,1 代表第一个匹配组。

那匹配组是什么,注意到 /callback=([^&]+)/ 中,

  • / 是正则开始和结束的标志;
  • callback= 是普通的匹配字符串
  • () 包裹的就是匹配组,意思是说告诉 match 要把这一段单独截取出来,返回时放到你面前
  • [^&][] 包裹。比如 [abc] 的意思是,这个地方匹配单个的 abc 都可以。加上一个 ^ 就是否定,我不信教程里没有。综上 [^&] 就是说这里除了 & 字符,都能匹配。
  • + 意思是前面那个玩意,就是 [^&],得出现至少一次才行。

所以这个正则就是负责把 http://127.0.0.1:3000/api?callback=foo 里面 callback 参数的值拿出来。

其实我说了这么多废话不顶什么用,假如你百度一下 正则可视化网站,随手点进 https://www.v2ex.com/t/291366,会发现很多好东西哦

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 一个正则看不懂

    一个正则看不懂

  • 如何实现chrome.exe动态加载本地的html

    如何实现chrome.exe动态加载本地的html

  • 2021-02-17:规定1和A对应、2和B对应、

    2021-02-17:规定1和A对应、2和B对应、

  • wepack安装3.6.0失败,查询版本老是说

    wepack安装3.6.0失败,查询版本老是说

腾讯云代理商
海外云服务器