首页 文章

编写正确的正则表达式以允许数字和仅字母和数字的组合混合

提问于
浏览
1

我有一个字符串示例,如下所示:

51925120851209567

字符串和数字的长度可能会有所不同,但我只想让字符串只包含数字,或者它是字母和数字的组合 . 例如,一个有效的将是这样的:

B0031Y4M8S // contains combination of letters and numbers without white space

无效的正则表达式将是:

Does not apply // this one contains white spaces and has only letters

总结一下,正则表达式应该只允许这些组合:

51925120851209567 // contains only numbers and is valid

B0031Y4M8S // contains combination of numbers and letters and is valid as well

其他一切都无效......

我目前的解决方案只包括字符串是一组整数而不是其他...但是我不确定如何过滤掉没有空格和特殊字符串的数字和字母的组合也是有效的为正则表达式?

Regex regex = new Regex("^[0-9]+$");

    if (regex.IsMatch(parameter))
    { 
     // allow if statement to pass if the regex matches
    }

有人可以帮我吗 ?

2 回答

  • 3

    你可以用

    ^(?![A-Za-z]+$)[0-9A-Za-z]+$
    

    它匹配1个字母数字字符,但如果所有字符串只包含字母,则匹配将失败 .

    Details

    • ^ - 字符串的开头

    • (?![A-Za-z]+$) - 如果有1个ASCII字母,后面跟着当前位置右侧的字符串结尾,则匹配失败的负向前瞻

    • [0-9A-Za-z]+ - 1个ASCII字母

    • $ - 字符串结束 .

    regex demo .

  • 0

    @The fourth bird 's answer will almost get you there. I' m没有正则表达式专家,但是一个简单的方法可以让你得到你想要的东西:

    Regex regex = new Regex("^[a-zA-Z0-9]+$");
    

    这将为您提供第一级排除 . 如果它通过了,请检查:

    Regex regex = new Regex("^[a-zA-Z]+$");
    

    如果它匹配,那么你知道它只是字母字符,你可以跳过它 . 我敢肯定有一种更好的方法来编写高尔夫球,但如果你处于紧张状态,这应该适用于现在 .

相关问题