正则表达式.NET

正则表达式.NET,.net,regex,string,expression,.net,Regex,String,Expression,我需要一个正则表达式来表示一些必须与字符串匹配的参数 这是 该字符串至少包含8个字符,最多包含20个字符 此字符串的这些字符可以是alfabet字符或特殊字符 --换言之..除空格外的所有字符 完整字符串中必须至少有1个数字 字符串不能以数字或下划线开头 字符串的最后两个字符必须相同,但最后两个相同的字符是大写还是非大写并不重要(不区分大小写) 必须匹配所有: +234567899 a_1de*Gg xy1Me*__ !41deF_hij2lMnopq3ss C234567890123$^678

我需要一个正则表达式来表示一些必须与字符串匹配的参数

这是

  • 该字符串至少包含8个字符,最多包含20个字符

  • 此字符串的这些字符可以是alfabet字符或特殊字符 --换言之..除空格外的所有字符

  • 完整字符串中必须至少有1个数字

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

  • 字符串的最后两个字符必须相同,但最后两个相同的字符是大写还是非大写并不重要(不区分大小写)

  • 必须匹配所有:

    +234567899
    a_1de*Gg
    xy1Me*__
    !41deF_hij2lMnopq3ss
    C234567890123$^67800
    *5555555
    sDF564zer""
    !!!!!!!!!4!!!!!!!!!!
    abcdefghijklmnopq9ss
    
    可能不匹配:

    +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

    不能在两个不同的字符上结束:

    a_1+eFg
    b41DEf_hij2lmnopq3st
    
    字符串中不能没有数字:

    abCDefghijklmnopqrss
    abcdef+++dF
    !!!!!!!!!!!!!!!!!!!!
    ------------------------------------------------------
    
    这就是我到目前为止所拥有的…但我真的为此伤透了脑筋。。。 如果你不完全知道答案,那不是问题。。。 我只想找到正确的方向

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

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

    \S{8,20}
    
    [^_0-9].*\d.*
    
    .*(?i)(.)\1
    
    如果必须为1,请使用以下命令:

    ^[^_\s\d](?=.*\d)\S{5,17}(?i)(\S)\1$
    
    (我必须感谢Casmir帮我找到了最后一个bug。)

    编辑:

    这是

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

  • (后面必须跟任何字符,然后是数字)

  • 然后是五到十七个非空白字符

  • 然后(从现在起不区分大小写),一个空白字符,后跟相同的字符

  • 您可以尝试以下方法:

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

    谢谢你,兄弟!我知道的唯一问题是他仍然会找到这个:841DEf_hij2lmnopq3stt。我的正则表达式工具将字符串标记为从“D”Put开始的
    ^
    开头和
    $
    结尾。我已经习惯了Java,其中
    .match
    测试整个字符串是否匹配。非常感谢。只是一件小事…它们是否可能是匹配整个字符串的另一种方法,然后是“^”和“$”?由于某些原因,当我添加这两个符号时,我的正则表达式工具突然找不到任何东西。。。Thanx分配了帮助,所以farThanx paul…但是为什么每个正则表达式测试人员都给出0个匹配?我想我在语法上犯了一个愚蠢的错误…word bounderys有可能吗?…你有时间帮我在正则表达式测试仪上检查一下吗?因为里面说0个匹配也…@Fosa,试试regexhero.net/tester。它是基于Silverlight的。我的正则表达式在那里工作(不幸的是,我认为我不能以小提琴的形式发表)。已经分配了帮助。。。剩下的唯一问题是这个答案:^[^\s\d](?=.*\d)\s{5,17}(?i)(\s)\1$给出0个匹配项。即使是在一个在线正则表达式测试仪中…我想知道是否可以使用word bounderys?Thanx只是为了添加额外的信息…现在它在我的特殊正则表达式测试仪中也起作用了。在那个正则表达式测试程序中…我无法选中一个复选框,它说的是Multiline…所以我必须添加正则表达式参数(?m),这样小的添加以(?m)^[^\s\d](?=.*\d)\s{5,17}(?I)(\s)\1$信用给Paul Draper和Casimir et Hippolyte。可能重复的