正则表达式捕获前 5 组和最后一个字符
Regex to capture the first 5 groups and last character
我正在尝试创建一个正则表达式,无论字符串的大小如何,它都会提取字符串中的前 5 个字符和最后一个字符。例如
对于FOO:BAR:123FF:FOO:BARF:OO:BAR:1234
或FOO: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))
我正在尝试创建一个正则表达式,无论字符串的大小如何,它都会提取字符串中的前 5 个字符和最后一个字符。例如
对于FOO:BAR:123FF:FOO:BARF:OO:BAR:1234
或FOO: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))