【问题标题】:regex to valiadte a string with alphanumeric and but no identical characters正则表达式验证具有字母数字但没有相同字符的字符串
【发布时间】:2015-11-04 00:20:18
【问题描述】:

我正在研究一个正则表达式来验证一个字符串,

  • 包含字母数字值
  • 连续包含不超过 4 次相同字符(如 aaaaa222222
  • 总长度应在 6 到 15 之间

我正在使用以下正则表达式,但它不适用于输入 => String1bb​​bbb

/^(?=.*[a-z])(?=\S*[A-Z])(?=\S*[0-9])(?!.*[\w{4,}])[a-zA-Z0-9]{6,15}+$/i


if(preg_match('/^(?=.*[a-z])(?=\S*[A-Z])(?=\S*[0-9])(?!.*[\w{4,}])[a-zA-Z0-9]{6,15}+$/i', $string)) {
    echo "Valid String";
} else {
    echo "invalid String";
}

使用否定前瞻来验证相同的字符,如下所示

(?!.*[\w{4,}])

任何帮助将不胜感激。

【问题讨论】:

  • 你能给我们一个regex101 有正面和负面的测试用例吗?我将您的代码应用到here 并没有给出任何有效的结果。

标签: php regex preg-match


【解决方案1】:

你可以使用这个正则表达式:

^(?=.{6,15}$)(?:([A-Za-z0-9])\1{0,3}(?!\1))+$

这将确保长度在 6 到 15 之间,它将捕获字符,可能重复最多 3 次,然后它将确保同一字符不会在下一个位置再次重复。在这里,您可以在 regex101 中找到它:https://regex101.com/r/aO7pM5/1

【讨论】:

    猜你喜欢
    • 2019-10-19
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多