Regex 正则表达式

Regex 正则表达式,regex,Regex,我正在尝试将字符串(长度=4)与小写字母和数字匹配。可以是4位数字,但不能是4个字母。例如,我想匹配: d4rt df5h 34d6 4567 但不是“埃蒂” 我得到了这个模式([a-z]+|[0-9]+{4},但这让我保持了4个字母的大小写。你的正则表达式([a-z]+|[0-9]+{4}使用了一个交替,它将匹配捕获组中的1+小写字符或1+数字,并重复4次。这也将匹配4个字母 如果支持,您可以使用一个负的前瞻来断言后面的不是4个小写字符 要匹配长度为4的字符串,可以使用锚来断言字符串的开始^

我正在尝试将字符串(长度=4)与小写字母和数字匹配。可以是4位数字,但不能是4个字母。例如,我想匹配:

d4rt
df5h
34d6
4567
但不是“埃蒂”

我得到了这个模式
([a-z]+|[0-9]+{4}
,但这让我保持了4个字母的大小写。

你的正则表达式
([a-z]+|[0-9]+{4}
使用了一个交替,它将匹配捕获组中的1+小写字符或1+数字,并重复4次。这也将匹配4个字母

如果支持,您可以使用一个负的前瞻来断言后面的不是4个小写字符

要匹配长度为4的字符串,可以使用锚来断言字符串的开始
^
和结束
$

^(?![a-z]{4}[a-z0-9]{4}$

您的正则表达式
([a-z]+|[0-9]+){4}
使用一个交替选项,该选项将匹配捕获组中的1+小写字符或1+数字,并重复4次。这也将匹配4个字母

如果支持,您可以使用一个负的前瞻来断言后面的不是4个小写字符

要匹配长度为4的字符串,可以使用锚来断言字符串的开始
^
和结束
$

^(?![a-z]{4}[a-z0-9]{4}$


您的表达式匹配四个
{4}
,任何大于1个小写字母
[a-z]
的数字或任何大于一个数字的数字。因此,您的代码实际上也匹配了4个以上的字母或数字

您的问题可以通过lookaheads解决

(?=[a-z]{0,3}[0-9])[a-z0-9]{4}
(?=[a-z]*[0-9])向前看,查找零个或多个字母,直到找到一个数字。但当它找到这样一个序列时,它将从前瞻开始继续匹配。将其视为一种“赛前准备”


[a-z0-9]{4}此部分检查四个数字或小写字符,但由于向前看,我们已经确定至少有一个数字。

您的表达式匹配四个
{4}
,任何大于1个小写字母的数字
[a-z]
或大于一位数字的任何数字。因此,您的代码实际上也匹配了4个以上的字母或数字

您的问题可以通过lookaheads解决

(?=[a-z]{0,3}[0-9])[a-z0-9]{4}
(?=[a-z]*[0-9])向前看,查找零个或多个字母,直到找到一个数字。但当它找到这样一个序列时,它将从前瞻开始继续匹配。将其视为一种“赛前准备”


[a-z0-9]{4}此部分检查四个数字或小写字符,但由于向前看,我们已经确定其中至少有一个数字。

正如您的要求所述,字符串应至少包含一个数字,其余可以是任何包含数字和小写字母的字符,精确到4个字符,你可以用这个正则表达式

^(?=.*\d)[a-z0-9]{4}$
说明:

  • ^
    -->开始输入
  • (?=.*\d)
    -->向前看,确保输入至少包含一个数字
  • [a-z0-9]{4}
    -->确保在允许的字符集中只匹配小写字母和数字
  • $
    -->输入结束

正如您的要求所述,字符串应至少包含一个数字,其余可以是任何包含数字和小写字母的内容,精确到4个字符,您可以使用此正则表达式

^(?=.*\d)[a-z0-9]{4}$
说明:

  • ^
    -->开始输入
  • (?=.*\d)
    -->向前看,确保输入至少包含一个数字
  • [a-z0-9]{4}
    -->确保在允许的字符集中只匹配小写字母和数字
  • $
    -->输入结束

什么是语言?什么是语言?如果字符串超过四个字符,例如
erty7
,您的先行搜索应该只查找0-3小写,例如
(?=[a-z]{0,3}[0-9])
。谢谢你!我根据您的建议修复了它。如果字符串超过四个字符,例如
erty7
,则您的先行搜索应该只查找0-3小写,例如
(?=[a-z]{0,3}[0-9])
。是的。谢谢你!我根据你的建议修正了它。