高楼层(5)房间4|59.1平米|南北
我要取第一个|前面的内容,就是 "高楼层(5)房间4".
我写的匹配正则 (.*(?=\|)){1}
为啥匹配的还是 "高楼层(5)房间4|59.1平米" ?
高楼层(5)房间4|59.1平米|南北
我要取第一个|前面的内容,就是 "高楼层(5)房间4".
我写的匹配正则 (.*(?=\|)){1}
为啥匹配的还是 "高楼层(5)房间4|59.1平米" ?
/(.*?(?=\|))/
59.1平米
后面也有 |
,正则默认是贪婪的,所以我加了 ?
就能运行了
另外不明白为什么非要用正则,.split("|")[0]
清楚一些吧
let [地址,面积, 朝向] = '高楼层(5)房间4|59.1平米|南北'.split('|');
console.log(地址,面积, 朝向);
//高楼层(5)房间4 59.1平米 南北
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
这涉及到 贪婪匹配和非贪婪匹配 的概念。 简单说,你写的正则,会一直找到文本中最后一个
|
位置,默认是.*
贪婪的。 只需将.*
改成.*?
即可,其中的问号指示 非贪婪,即满足条件但尽可能少的字符。