0

对于某些必须在字符串上匹配的参数,我需要一个正则表达式。

这里是...

  1. 该字符串至少存在 8 个字符,最多 20 个字符。

  2. 此字符串的这些字符可能是 alfabet 字符或特殊字符 -- 换句话说..除空格之外的所有字符

  3. 在完整的字符串中必须至少有 1 个数字。

  4. 字符串不能以数字或下划线开头

  5. 字符串的最后 2 个字符必须相同,但最后的 --identical 字符是大写还是非大写无关紧要(不区分大小写)

必须匹配所有:

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

可能不匹配:

不能少于 8 个或多于 20 个字符:

a_1+Eff
B41def_hIJ2lmnopq3stt

不能包含空格:

A_4 e*gg
b41def_Hij2l nopq3ss

不能以数字或下划线开头:__1+Eff 841DEf_hij2lmnopq3stt

不能以 2 个不同的字符结尾:

a_1+eFg
b41DEf_hij2lmnopq3st

字符串中不能没有数字:

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

到目前为止,这就是我所拥有的...但是我真的对此感到头疼...如果您不完全知道答案,那不是问题...我只是想朝着正确的方向前进

([^0-9_])(?=.*\d)(\S{8,20})(?i:[\S])\1
4

2 回答 2

0

如果您可以使用多个正则表达式,请尝试以下操作:

\S{8,20}

[^_0-9].*\d.*

.*(?i)(.)\1

如果它必须是一个,使用这个:

^[^_\s\d](?=.*\d)\S{5,17}(?i)(\S)\1$

(我必须感谢 Casmir 帮助我找到了最后一个错误。)

编辑:

这是

  1. 任何一个字符,下划线、空格或数字除外。

  2. (必须后跟任何字符,然后是数字)

  3. 然后是 5 到 17 个非空白字符

  4. then(从现在开始不区分大小写),一个空格字符,后跟相同的字符

于 2013-11-03T21:47:08.903 回答
0

你可以试试这个:

^[^\s\d_](?=.*\d)\S{5,17}(?i)(\S)\1$
于 2013-11-03T21:51:55.437 回答