所以基本上给定这个字符串iiisdoso
,我想提取之前字符串的所有部分,但不包括字母o
。
所以基本上是 iiisd
和 s
。
我目前只有
const data = "iiisdoso"
const regex = /(.*?)o/g
console.log(data.match(regex))
但此结果包含 o,但我的目标是返回最多但不包括 o
的结果
最佳答案
正如评论中已经提到的,您可以通过否定和字符类来实现这一点:
const data = "iiisdoso"
const regex = /([^o]+)/g
console.log(data.match(regex))
这会给你想要的结果
["iiisd", "s"]
但这也匹配任何后面没有“o”的字符串!为了避免这种情况,您需要使用
const regex = /([^o]+)o/g
在这种情况下,“o”包含在匹配中,并且必须为结果数组中的每个字符串删除 - 例如与
mymatch.replace('o','')
有趣:如果你使用
const regex = /([^o]*)/g
结果是
["iiisd", "", "s", "", ""]
这是我不明白的事情。嗯 - 我知道空字符串也与正则表达式匹配,并且可以放置在“o”之前。但是为什么我们在最后得到第三个空字符串?
关于javascript - 在 javascript 中使用正则表达式查找所有出现的情况,但不包括特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243506/