【问题标题】:Regex to detect consecutive characters正则表达式检测连续字符
【发布时间】:2014-02-28 14:01:29
【问题描述】:

希望有人可以帮助我使用正则表达式来验证名称。标准是字符串长度必须在 1 到 30 个字符之间,并且允许以下内容:大写字母、小写字母、空格、撇号、句号(或句点)和连字符。

我有一个正则表达式可以做到这一点,但复杂的是“特殊”字符(空格、撇号、句号、连字符)可能不是连续的。所以你不能这样:“Smithers-'Jones”(连字符后跟撇号),或者这个:“Smithers-Jones”(空格后跟连字符),或者这个“O''Reilly”(连续的撇号)。

从我目前所读的内容来看,我认为我需要以某种方式使用反向引用,但我还没有设法让任何工作。我见过检测重复字符的示例,但这并不完全相同。

任何帮助将不胜感激。

【问题讨论】:

  • 我认为您需要前瞻,但为此我什至会手动为其编写解析器。这将是一个非常简单的循环。您可能比使用脑力想出正则表达式并在此处发布更快地编写它。但这仍然是一个有效的问题。只是我的 2 美分。

标签: regex


【解决方案1】:

这个正则表达式应该可以工作:

^(?!.*?[ '.-]{2})[A-Za-z0-9 '.-]{1,30}$

工作演示:http://regex101.com/r/pJ3hJ9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多