📌  相关文章
📜  正则表达式匹配不在引号之间的字符串 - Javascript(1)

📅  最后修改于: 2023-12-03 15:26:51.970000             🧑  作者: Mango

正则表达式匹配不在引号之间的字符串 - JavaScript

在 JavaScript 中,我们有时需要匹配字符串中不在引号之间的文本,例如在处理某些特定格式的代码时。这时我们可以使用正则表达式来实现。

代码示例

以下是一个例子,我们需要匹配字符串中不在引号内的文本:

const str = 'This is "a string" with some \'quoted\' and unquoted text.'
const regex = /(?<!["'])(?<match>[^"'][\w\s]+)(?!["'])/g
let match
while (match = regex.exec(str)) {
  console.log(match.groups.match)
}

输出:

This is
with some
and
unquoted
text.

这里用到了负向零宽断言 (?<!pattern)(?![("'])pattern([)"']) 以及命名捕获组 (?<name>pattern),下面来详细解释:

正则表达式

正则表达式:/(?<!["'])(?<match>[^"'][\w\s]+)(?!["'])/g,含义如下:

  • (?<!["']) 表示匹配前面不是单引号或双引号的位置。这里用到了负向的零宽断言 (?<!pattern)pattern 是断言匹配的内容。
  • (?![("'])pattern([)"']) 表示匹配后面不是圆括号或单引号或双引号的位置。这里用到了负向的零宽断言 (?![pattern])pattern 是断言匹配的内容。
  • (?<match>[^"'][\w\s]+) 表示捕获不在引号之间的文本。首先匹配除了双引号、单引号和空格之外的字符,使用 [^"'] 表示非双引号或单引号,接着匹配任意多个单词字符或空格字符,在捕获组中命名为 match
  • /g 表示全局搜索,匹配多个结果。
总结

通过上面的例子,我们可以学会用正则表达式来匹配字符串中不在引号内的文本。当然,实际应用中需要根据具体情况进行调整。