前端小咸鱼一条 2022-09-04 13:31 采纳率: 61.5%
浏览 29
已结题

在JS权威里看到一个正则表达式不太理解,请教一下

想问问这段正则,有懂的可以解释一下吗

 /^{([^,]+),([^}]+)\}$/ 
  • 写回答

1条回答 默认 最新

  • Z_pigeon 2022-09-04 14:36
    关注

    如果有对应处理的数据来分析,其实会好些,没有就只能盲猜功能了。

    /^{([^,]+),([^}]+)\}$/ 首先看头看尾,^{表示以{开头,}$表示以结尾,得出结论它希望匹配的是'{xxxx}'长这样的字符串,那把正则稍微简化下就是这样{(),()},小括号里面的内容先不看,两个小括号中间是有个逗号的,那就是它希望匹配的字符串长'{xxxx,yyyy}'这样,接着分析第一个小括号,[^,]就表示匹配除了逗号的一个字符,[^,]+就表示匹配多个(>1)除了逗号的字符,那结合前面的两个小括号中间是有个逗号的,那就得出结论'{xxxx,yyyy}'这里的xxxx里面是没有逗号的,因为第一个小括号匹配的是非逗号的多个字符;好接下来分析第二个小括号([^}]+),同理[^}]这就是匹配非}的一个字符,[^}]+就是匹配多个非的字符,因为前面说了期望匹配的字符串大概长'{xxxx,yyyy}'这样,所以第二个小括号不要应该就是只取yyyy这个数据,好大概分析完了,剩下就是用途,长成这样的数据{xxxx,yyyy},那多半是字符串的对象,那我就假设匹配的字符串长'{aa:1,bb:2}',再回到正则/^{([^,]+),([^}]+)\}$/ ,这里前后两个小括号其实可以不用加的,功能没影响,它加上了意味着它想取出来,在正则里面使用了括号的,等下使用match时就可以获取到相应模块值,如

    var word = '{aa:1,bb:2}'
    var data = word.match(/^{([^,]+),([^}]+)}$/)
    console.log(data[1])   // aa:1
    console.log(data[2]) // bb:2
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 创建了问题 9月4日

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛