我正在学习如何使用正则表达式,我遇到了一些问题。
假设我输入一个数字,如果数字包含至少一个7但没有9,则输入对整个数字返回true。
例如:
123456789
应该返回false,12345678
的输入应该对12345678
返回true。
应该使用什么正则表达式?
我知道涉及7+
和[^9]
这两个术语,但我不完全确定如何使这些特定条件的整数返回true(7+[^9]
返回true输入12345678
表示123456 78
9,当我希望此值为12345678
时返回true。
很抱歉,如果我措辞严厉。
答案 0 :(得分:3)
您可以尝试以下内容:^[0-8]*7[0-8]*$
答案 1 :(得分:0)
你可以在这个数字中至少断言一个7,这是一个积极的先行:
^(?=.*7)[0-8]++$
第一部分(?=.*7)
是一个零宽度断言,它测试至少有一个7.它通过声明模式.*7
存在 - 即任何后跟一个7来做到这一点。 / p>
第二部分[0-8]++
检查数字中的所有数字是否在0-8之间。 ++
是一个或多个字符的占有匹配。因此,数字必须至少为一位数。
修改强>
要处理@AbsoluteƵERØ的评论,如果你想确保该数字是一个实数,即第一个数字不为零,你可以简单地断言
^(?=.*7)(?!0)[0-8]++$