gpt4 book ai didi

javascript - 使用 JavaScript 将单词与任意位置的新行精确匹配

转载 作者:行者123 更新时间:2023-12-02 15:18:33 25 4
gpt4 key购买 nike

如何使用 JavaScript 编程语言匹配以下模式?

样本(不是sampleword中的样本)

相同\nple

sa\nple

我使用\b 作为全字匹配的边界。我正在尝试找到一种有效的方法来在单词中的任何位置进行换行匹配。对于情况 2:\bsam[\s\S]ple\b 有效。对于 case3 也可以进行同样的修改以匹配。

但是,有没有办法让单一模式匹配所有这些?

最佳答案

您似乎在问如何将字符串与字符串中任意位置的单个可选空格匹配?如果是这样,看起来像这样:

function getRegEx(word) {
var patterns = word.split('').map(function (letter, index) {
return (
word.slice(0, index) +
'\\s?' +
word.slice(index)
)
})
patterns.shift()
return new RegExp('^' + patterns.join('|') + '$');
}

getRegEx('pattern').test('pat tern') // --> true

但是,如果字符串中可以有多个空格(如's amp le'),则如下所示:

function getRegEx(word) {
word = word.split('')
word = word.map(function (letter) {
return letter + '\\s?'
})
return new RegExp('^' + word.join('') + '$')
}

getRegEx('pattern').test('pat tern') // --> true

根据OP的请求(见评论):

如果您想查找无限数量的空格字符,请将 true 传递给以下函数(作为第二个参数)。否则,它只会找到一个:

function getRegEx(word, mult) {
var spaceCount = mult ? '*' : '?'
word = word.split('')
word = word.map(function (letter) {
return letter + '\\s' + spaceCount
})
return new RegExp('^' + word.join('') + '$')
}

getRegEx('pattern', true).test('pat tern') // --> true

如果您希望指定模式空间中可能出现的位置,可以按如下方式完成:

function getRegEx(word, mult) {
word = word.split('')
var spaceCount = mult ? '*' : '?'
var positions = []
word.forEach(function (char, index) {
if (char === ' ') positions.push(index)
})
positions.forEach(function (pos) {
word.splice(pos, 1, '\\s' + spaceCount)
})
return new RegExp('^' + word.join('') + '$')
}

在模式字符串中希望空格匹配的位置放置一个空格。如:

getRegEx('p at tern', true).test('p at tern')//--> true

关于javascript - 使用 JavaScript 将单词与任意位置的新行精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34271242/

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