正则表达式捕获前 5 组和最后一个字符

Regex to capture the first 5 groups and last character

我正在尝试创建一个正则表达式,无论字符串的大小如何,它都会提取字符串中的前 5 个字符和最后一个字符。例如

对于FOO:BAR:123FF:FOO:BARF:OO:BAR:1234FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234,它将捕获六个组,即FOO BAR 123FF FOO BAR 1234

您可以使用下面的正则表达式获取所有分隔的单词:

const regex = /[^:]*\w+/g

之后你可以通过以下方式获取所有匹配项:

const text = "FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234"
const matches = text.match(regex)

最后删除重复项:

const uniqueArr = Array.from(new Set(matches))
console.log(uniqueArr) // ["FOO", "BAR", "123FF", "FOO", "BAR", "1234"]

希望对您有所帮助! :)

如果您的字符串总是这样格式化,我认为使用 split

会更好

let a = 'FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234'
let res = a.split(':')
// Remove all between the 5th and the last element
res.splice(5, res.length - 5 - 1)

console.log(res)

但是如果你真的想用regex,也可以:

let a = 'FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234'
let regex = /^(\w+):(\w+):(\w+):(\w+):(\w+):.*:(\w+)$/

console.log(regex.exec(a).slice(1))