0

我正在学习如何使用正则表达式,我在这个问题上遇到了一些困难。

假设我输入了一个数字,如果该数字包含至少一个 7,但没有 9,则输入对整个数字返回 true。

例如: 123456789应该返回false,而 的输入12345678应该返回true for 12345678

应该为此使用什么正则表达式?

我知道这些条款7+[^9]参与其中,但我不完全确定如何使其在具有这些特定条件的整个数字上返回 true(当我希望它返回 true 时7+[^9],输入12345678123456 9 时返回 true )。7812345678

对不起,如果我的问题措辞不好。

4

2 回答 2

3

您可以尝试以下方法:^[0-8]*7[0-8]*$

于 2013-04-18T15:11:23.713 回答
0

您可以积极向前看,以断言数字中至少有一个 7:

^(?=.*7)[0-8]++$

第一部分(?=.*7)是零宽度断言,它测试至少有一个 7。它通过断言模式.*7存在来做到这一点 - 即任何后面跟着 7 的东西。

第二部分[0-8]++检查数字中的所有数字是否在 0-8 之间。++是一个或多个字符的所有格匹配。所以这个数字必须至少有一位数。

编辑

处理@AbsoluteƵERØ的评论,如果你想确保这个数字是一个实数,即第一个数字不为零,你也可以简单地断言

^(?=.*7)(?!0)[0-8]++$
于 2013-04-18T15:20:52.390 回答