我有以下正则表达式:

^(?=.*\d)(?=.*[a-zA-Z])[[!-~]]{6,32}$


这应该匹配包含至少1位数字,1个字母字符且长度在6到32之间的所有字符串(无空格)。我几乎可以肯定我的正则表达式是正确的,因为它可以完美地here正常工作。但是,当我在C#中使用Regex.IsMatch时,它不起作用。

bool isValidInput = Regex.IsMatch(myValue, myRegex) // I expect this to be true but it's false


除了C#外,我还注意到其他一些测试人员也不喜欢我的正则表达式。就像this。我的正则表达式有什么问题?

最佳答案

这应该匹配所有包含至少1位数字,1个字母字符且长度在6到32之间的字符串(不带空格)。


[[!-~]]是您的正则表达式breakdown:的问题(右列)

相反,我确定您要查找以下内容,\S匹配非空格字符。

^(?=.*\d)(?=.*[a-zA-Z])\S{6,32}$

关于c# - 正则表达式匹配中的不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30652323/

10-11 10:34
查看更多