我希望你能够创建一个正则表达式模式。
- 8个字符
[a-zA-Z]
- 字符串中只能包含一个数字
我创建了以下模式:
^(?=.*[0-9].*[0-9])[0-9a-zA-Z]{8}$
这个模式可以正常工作,但我希望只允许一个数字。 例如:
aaaaaaa6 match
aaa7aaaa match
aaa88aaa don't match
aaa884aa don't match
aaawwaaa don't match
我希望你能够创建一个正则表达式模式。
[a-zA-Z]
我创建了以下模式:
^(?=.*[0-9].*[0-9])[0-9a-zA-Z]{8}$
这个模式可以正常工作,但我希望只允许一个数字。 例如:
aaaaaaa6 match
aaa7aaaa match
aaa88aaa don't match
aaa884aa don't match
aaawwaaa don't match
您可以使用以下方法:
^(?=[0-9a-zA-Z]{8})[^\d]*\d[^\d]*$
如果你想要一个非正则表达式的解决方案,我为一个小项目编写了这个:
public static bool ContainsOneDigit(string s)
{
if (String.IsNullOrWhiteSpace(s) || s.Length != 8)
return false;
int nb = 0;
foreach (char c in s)
{
if (!Char.IsLetterOrDigit(c))
return false;
if (c >= '0' && c <= '9') // just thought, I could use Char.IsDigit() here ...
nb++;
}
return nb == 1;
}