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

dadange
  • 5
新手上路,请多包涵
高楼层(5)房间4|59.1平米|南北

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

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

回复
阅读 454
4 个回答
✓ 已被采纳

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

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

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

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

let [地址,面积, 朝向] = '高楼层(5)房间4|59.1平米|南北'.split('|');
console.log(地址,面积, 朝向);
//高楼层(5)房间4 59.1平米 南北
你知道吗?

宣传栏