gpt4 book ai didi

javascript - 除非字符串中有括号,否则前瞻不匹配

转载 作者:行者123 更新时间:2023-11-30 20:13:51 25 4
gpt4 key购买 nike

我正在使用这种否定前瞻来搜索单行字符串:

/\s+(?![^[]*]).+/g

这符合以下两个条件:

// String 1
a.casd-234[test='asfd asdf'] abc defg

// String 2
asf.one.two.three four five six

返回 abc defgfour five six

我尝试编写一个 express 来获取文本之前的值 (a.casd-234[test='asfd asdf'], asf.one.two.three):

/.+(?<=[^[]*])\s/g

这适用于字符串一,但在字符串二上它不起作用,因为它找不到任何东西,因为字符串中没有 [] 字符.

我在这个回顾中做错了什么?

最佳答案

您正在使用正则表达式匹配一个字符串从某个点到它的末尾(正则表达式末尾的 .+ 这样做,匹配 1+ 个字符比换行符,直到行/字符串结束)。

因此,最简单的解决方案是使用带有 .replace 方法的相同模式:

var rx = /\s+(?![^[]*]).+/;
console.log("a.casd-234[test='asfd asdf'] abc defg".replace(rx, ''));
console.log("asf.one.two.three four five six".replace(rx, ''));

请注意,此处不需要 g 修饰符,因为您只需要替换一次。如果字符串可能有多行,请将每个 . 替换为 [^][\s\S]

关于javascript - 除非字符串中有括号,否则前瞻不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com