在RegEx中搜索单个字符很容易。
exp:至少一位数:
\d
所以我需要在文本中匹配至少2位数
.*\d{2}.* or .*\d\d.* #### "d2dr5" -> not match... d22r or d00r match..
不起作用,因为RegEx引擎连续查找这些数字我如何搜索整体?例如
我想在文本中匹配至少3个数字和2个大写单词。文本长度可以是最大12.我该怎么办?如果你能给出一个解释的例子,那么我可能有一个重新搜索的点
示例匹配:
a9r2lDpDf2 - 匹配。至少3位数2大写,总共不超过12个字符。
答案 0 :(得分:0)
如果你想确保字符串中只有三个数字,你可以尝试这个(如果需要,添加字符串的开头和结尾):
[^\d]*\d[^\d]*\d[^\d]*\d[^\d]*
[^\d]*
- 除数字以外的任何内容。
相同的模式可用于检查大写字母:
[^A-Z]*[A-Z][^A-Z]*[A-Z][^A-Z]*
RegEx不是检查长度的最佳工具。您使用的语言类似于length(str)
或str.length
或str.length()
等。
可以使用超前功能完成。这就是RegEx在Perl中的样子(它可以满足您的要求):
/^(?=.*\d.*\d.*\d)(?=.*[A-Z].*[A-Z]).{12}$/
(?=.*\d.*\d.*\d)
- “向前看”以查看是否有3位
(?=.*[A-Z].*[A-Z])
- “向前看”以查看是否有2个大写字母
.{12}
- 长度必须精确为12个字符。任何角色12次。
答案 1 :(得分:0)
我不认为正则表达式是这里的最佳解决方案,但是为了学术兴趣
(?=(.*[0-9]){3})(?=(.*[A-Z]){2}).{5,12}