【问题标题】:RegEx to find two or more consecutive chars正则表达式查找两个或多个连续字符
【发布时间】:2011-08-15 18:08:46
【问题描述】:

我需要确定一个字符串是否包含两个或多个连续的字母字符。两个或更多[a-zA-Z] 并排。 示例:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

【问题讨论】:

    标签: regex


    【解决方案1】:

    这应该可以解决问题:

    [a-zA-Z]{2,}
    

    【讨论】:

    • 可能的{2} 不带逗号也应该可以,对吧?
    • Alexander,澄清几点:{2} 表示长度必须为 2。{2,} 表示表达式的长度可以是 => 2
    • 2 的反面是什么 -
    • @Jonathan 我假设您的意思是“对于最多 max 连续令牌应该使用什么?”。那么答案就是{,max}(见this)
    【解决方案2】:

    [a-zA-Z]{2,} 不适用于两个或多个相同的连续字符。为此,您应该捕获任何字符,然后像这样重复捕获:

    (.)\1

    括号捕获 .它代表任何字符, \1 是捕获的结果 - 基本上是在寻找该字符的连续重复。如果您想具体说明您希望找到哪些字符是相同的连续字符,只需将“任何字符”替换为字符类...

    ([a-zA-Z])\1

    查找连续重复的小写或大写字母。匹配“abbc123”而不是“abc1223”。为了允许它们之间有一个空格(即 ab),然后在捕获的字符和重复之间的正则表达式中包含一个可选空格...

    ([a-z]A-Z])\s?\1

    【讨论】:

    • 我很确定您误解了这个问题,因为它是关于两个字母的。您的正则表达式适用于不同的情况:两个相似的字母!
    【解决方案3】:

    我用过的个人(作为菜鸟):

    [0-9][0-9]+.
    

    但是西蒙的那个,要好得多! =D

    【讨论】:

      【解决方案4】:

      我很确定您可以使用 [A-z] 而不是 [a-zA-Z] 来获得小写和大写字母字符 http://www.w3schools.com/jsref/jsref_obj_regexp.asp

      【讨论】:

      • -1:这是另一个很好的例子,说明为什么你永远不应该将 w3schools 用于参考或教育。 [A-z] 匹配的不仅仅是字母。具体来说,它还匹配方括号、反斜杠、插入符号、下划线和反引号。
      • 确实,@TimPietzcker 说的是正确的;他提到的字符介于Z 和a 之间,因此会(错误地)包含在这种模式中。我赞同这个建议:不要使用 w3schools! 它有很多这样的微妙的坏信息。
      • 哎呀,Stack 上的第一次 zing,它比我想象的更刺痛。因此,通过包含 A-z,它匹配 [A-Z 一堆我不想要的东西和 a-z] 大写字母和非大写字母之间的所有字符? danshort.com/ASCIImap
      • 所以我可以说类似 [!-+]?还有一种方法可以访问正则表达式中的字符码,例如 [65-90],它与 [A-Z] 相同?
      • @Kevin [65-90] 将匹配5-9(其中还包括6)和0!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多