请教一个正则问题,取竖线前面的

高楼层(5)房间4|59.1平米|南北

我要取第一个|前面的内容,就是 "高楼层(5)房间4".
我写的匹配正则 (.*(?=\|)){1}

为啥匹配的还是 "高楼层(5)房间4|59.1平米" ?

阅读 3.1k
4 个回答

这涉及到 贪婪匹配和非贪婪匹配 的概念。 简单说,你写的正则,会一直找到文本中最后一个|位置,默认是.*贪婪的。 只需将 .*改成 .*?即可,其中的问号指示 非贪婪,即满足条件但尽可能少的字符。

/(.*?(?=\|))/

59.1平米 后面也有 |,正则默认是贪婪的,所以我加了 ? 就能运行了

另外不明白为什么非要用正则,.split("|")[0] 清楚一些吧

/(^.*?)(?=\|)/gm

let [地址,面积, 朝向] = '高楼层(5)房间4|59.1平米|南北'.split('|');
console.log(地址,面积, 朝向);
//高楼层(5)房间4 59.1平米 南北
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题