【问题标题】:Regex for a string made only of repeated chars仅由重复字符组成的字符串的正则表达式
【发布时间】:2016-02-07 11:01:48
【问题描述】:

我需要创建一个验证来确定一个字符串是否仅由重复的字符组成。因此,例如,它会捕获“pp”而不是“happy”。

到目前为止,我可以使用以下方法检查重复字符:

/(.)\1+/.test(value);

如何更改此正则表达式以仅捕获“pp”而不捕获“happy”?正则表达式会是最好的方法吗?

【问题讨论】:

标签: javascript regex


【解决方案1】:

您的正则表达式几乎是有效的,您只需在开头和结尾分别添加^ 和$,以确保字符串不包含任何其他字符:

/^(.)\1+$/.test(value);

另请参阅Regex101 demo。

【讨论】:

    【解决方案2】:

    逆向也应该起作用。即,这个正则表达式应该匹配一个包含两个不重复字符或空字符串的字符串。否定 ! 存在于正则表达式进行反向匹配之前。

    > !/(.)(?!\1).|^$/.test('happy')
    false
    > !/(.)(?!\1).|^$/.test('')
    false
    > !/(.)(?!\1).|^$/.test('pp')
    true
    > !/(.)(?!\1).|^$/.test('ppo')
    false
    > !/(.)(?!\1).|^$/.test('ppppppppp')
    true
    > 
    

    DEMO

    【讨论】:

    • 您实际上是在说,如果不是有一些与第一个字符不同的后续字符,则返回 true。这在哪些方面比只说如果所有后续字符都相同则返回 true 的正则表达式更好?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多