我正在寻找创建 RegEx 模式
- 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
最佳答案
您可以改用:
^(?=[0-9a-zA-Z]{8})[^\d]*\d[^\d]*$
第一部分将断言匹配包含 8 个字母或数字。确保这一点后,第二部分确保匹配中只有一个数字。
编辑:解释:
- anchor
^
和$
表示字符串的开始和结束。 (?=[0-9a-zA-Z]{8})
断言匹配包含 8 个字母或数字。[^\d]*\d[^\d]*
表示只有一个数字字符和剩余的非数字字符。由于我们已经断言输入包含数字或字母,所以这里的非数字字符是字母。
关于c# - 正则表达式向前看和向后看最多一位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435978/