正则表达式匹配任何句子,但避免字符重复

rob*_*rry 5 regex

我正在寻找帮助来创建一个正则表达式来验证满足这4个标准的字符串:

  1. 该字符串必须包含空格.
  2. 字符串必须以句号/句号结束.
  3. 该字符串必须至少包含15个字符.
  4. 该字符串不得包含3个或更多字符的重复.这是我特别挣扎的部分.

例如:

通过

  • 一二三四.

失败

  • 两个四个.
  • 一两个人.
  • 一二三四
  • 一二三.
  • 一二三四.

如果可能的话,你能解释一下正则表达式是如何构建的,以便让我更好地了解将来如何构建它们吗?


这是我到目前为止尝试过的,

^(.*?={15,})(\.\Z)$
Run Code Online (Sandbox Code Playgroud)

但我担心它甚至没有关闭,请帮助.

anu*_*ava 8

你可以使用这个正则表达式:

^(?=\S*\s)(?!.*?(.)\1{2}).{14,}\.$
Run Code Online (Sandbox Code Playgroud)

RegEx演示

说明:

  • (?=\S*\s) - 预测确保至少有一个空格
  • (?!.*?(.)\1{2}) - 否定前瞻以确保不存在3个连续字符的情况
  • .{14,} 确保至少有14个字符(第15个是最后一个点)
  • \.$ 确保点始终是最后一个字符