正则表达式:测试整个字符串

时间:2013-04-18 15:08:30

标签: regex

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

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

例如: 123456789应该返回false,12345678的输入应该对12345678返回true。

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

我知道涉及7+[^9]这两个术语,但我不完全确定如何使这些特定条件的整数返回true(7+[^9]返回true输入12345678表示123456 78 9,当我希望此值为12345678时返回true。

很抱歉,如果我措辞严厉。

2 个答案:

答案 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]++$