【问题标题】:RegEx to check 3 or more consecutive occurrences of a character正则表达式检查 3 个或更多连续出现的字符
【发布时间】:2011-02-07 07:06:26
【问题描述】:

我想检查输入字符串以验证正确的文本。

一个。我希望用户允许编写字母数字字符,包括句点、逗号、连字符和圆括号 ()

b.但是,我不希望用户一起输入 3 位或更多位的数字。例如:12 是允许的,而 185 是不允许的。

c。我不希望用户输入诸如“......”或“----------”或“aaaaaaaaaaaaaa”或“bbbbbbbb”等字符串。

请建议相同的正则表达式。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    您可以使用正则表达式:

    (?!.*(.)\1{2})^[a-zA-Z0-9.,()-]*$
    

    它使用负前瞻(?!.*(.)\1{2}) 来确保没有任何字符重复3 组。

    然后它使用正则表达式^[a-zA-Z0-9.,()-]*$ 来确保字符串仅由字母、数字、句点、逗号、括号和连字符组成。

    Rubular link

    【讨论】:

    • 我用过这个code if(preg_match("(?!.*(.)\1{2})^[a-zA-Z0-9.,()-]*$ ", $about_you)){ echo '无效文本'; code 并引发以下错误:Warning: preg_match() [function.preg-match]: Unknown modifier '^' in E:\Projects\www\scripts\test-f.php on line 33 line 33 begis在 if(preg_match("(?!.*(.)\1{2})^[a-zA-Z0-9.,()-]*$", $about_you)){
    • 试试:if(preg_match("/(?!.*(.)\1{2})^[a-zA-Z0-9.,()-]*$/", $about_you)){
    • 抱歉,它没有用。虽然我现在没有收到任何解析错误,但表达式无法匹配字符串,因为它应该是 code if(preg_match("/(?!.*(.)\1{2})^[a-zA -Z0-9.,()-]*$/", $about_you)){ echo "error"; }code
    • 上述正则表达式不匹配特殊字符。 /(?!.*(.)\1{2})^.*$/ 这个检查任意 3 个或更多连续字符。
    【解决方案2】:

    大多数正则表达式库支持以下内容: /(.)\1{2,}/

    \1 是一个反向引用

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多