【问题标题】:Regex: I want to match only words without a dot at the end正则表达式:我只想匹配末尾没有点的单词
【发布时间】:2021-06-22 14:55:12
【问题描述】:

例如:乔治·R·R·马丁 我只想匹配 George 和 Martin。

我试过了:\w+\b. 但是不行!

【问题讨论】:

  • 你是如何尝试那个正则表达式的?
  • @WiktorStribiżew 我的问题是,我不知道如何在正则表达式中取反。如何告诉正则表达式我最后不想要一个点?这个词的结尾是\b...但是还有什么?
  • @gskema 这个网站很烂:(

标签: javascript regex


【解决方案1】:

\w+\b. 匹配后跟单词边界的 1+ 个单词字符,然后匹配任何非单词字符的字符(因为 \b 限制了以下 . 子模式)。请注意,这种方式不会否定任何东西,您会错过一个重要的事情:正则表达式模式中的文字点必须被转义。

您可以使用否定前瞻(?!\.)

var s = "George R.R. Martin";
console.log(s.match(/\b\w+\b(?!\.)/g));

regex demo

详情

  • \b - 引导词边界
  • \w+ - 1+ 个单词字符
  • \b - 词尾边界
  • (?!\.) - 在匹配的最后一个单词 char 之后不能有 .

在此处查看有关how negative lookahead works 的更多信息。

【讨论】:

  • 这就是我所需要的。太感谢了!我会在几分钟内将该答案标记为最佳答案。
猜你喜欢
  • 2016-12-22
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多