gpt4 book ai didi

正则表达式在字符串末尾找到 2 个相同的字符

转载 作者:行者123 更新时间:2023-12-01 22:47:20 24 4
gpt4 key购买 nike

我必须找到一个符合以下规则的正则表达式。

  • 包含 8 到 20 个字符(大写或普通字符)。
  • 不包含空格字符。
  • 不能以数字 (0-9) 或下划线 (_) 开头。
  • 在字符串的末尾,它必须是 2 个相同的字符。
  • 必须包含至少 1 个数字。

好的:

+234567899
a_1de*Gg
xy1Me*__
!41deF_hij2lMnopq3ss
C234567890123$^67800
*5555555
sDF564zer""
!!!!!!!!!4!!!!!!!!!!
abcdefghijklmnopq9ss

不行:

多于或少于 8-20 个字符:

a_1+Eff
B41def_hIJ2lmnopq3stt
abCDefghijklmnopqrss5

有空格字符:

A_4 e*gg

以数字或下划线开头:

__1+Eff
841DEf_hij2lmnopq3stt

以两个不同的字符结尾:

a_1+eFg
b41DEf_hij2lmnopq3st

不包含数字:

abCDefghijklmnopqrss
abcdef+++dF
!!!!!!!!!!!!!!!!!!!!

到目前为止我有这个

((?m:[^0-9_]^(?=.*[0-9])\S{8,20}$))

但我似乎无法找出最后两个相同的字符?

最佳答案

以下内容适用于大多数正则表达式(PCRE、Python、PHP、JavaScript):

/^(?=\S{8,20}$)(?=\D*\d)(?![0-9_]).{6,18}?(.)\1$/i

Demo with unit tests against your sample cases

解释:

  • / 分隔符
  • ^ 字符串开头
  • (?=\S{8,20}$) 后跟 8-20 个非空白字符
  • (?=\D*\d) 包含一个数字
  • (?![0-9_]) 不能以数字或下划线开头
  • .{6,18}? 非贪心字符匹配(将我们从字符串的开头移到结尾)
  • (.)\1 匹配任意字符,后跟同一个字符
  • $ 字符串结尾
  • / 分隔符
  • i 标志:不区分大小写(需要看到 Gg,例如两次作为同一个字符)

关于正则表达式在字符串末尾找到 2 个相同的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com