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

时间:2015-01-12 17:21:41

标签: regex

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

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

    • 一两三四。

    故障

    • OOOne two thee four。
    • 一两个人。
    • 一两三四
    • 一两三。
    • Onetwothreefour。

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


    这是我到目前为止所尝试的内容,

    ^(.*?={15,})(\.\Z)$
    

    但我担心它甚至没有关闭,请帮忙。

1 个答案:

答案 0 :(得分:8)

您可以使用此正则表达式:

^(?=\S*\s)(?!.*?(.)\1{2}).{14,}\.$

RegEx Demo

<强>解释

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