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

标签 javascript regex

如何使用 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/

相关文章:

javascript - Angular 重新加载嵌入式 Controller

javascript - 使用带有 Javascript 的数组检测媒体文件并返回所有网址

javascript - 使用lookarounds来查找匹配的javascript

java - Java 正则表达式实现中的错误?

javascript - 我找到了如何在 typescript 中制作表格,但我不知道如何将其插入到html代码中

javascript - Angular 中的多个指令

javascript - 组件初始化后更新父组件@Input属性

c# - 如何从字符串 C# 中找到连字符的位置剥离字符串

python - 使用 Regex 调度多个 url

regex - Scala 正则表达式 - 如何匹配大括号内部但转义大括号本身