0

正規表現の使用方法を学んでいますが、この問題でいくつかの問題が発生しています。

数字を入力すると、数字に少なくとも 1 つの 7 が含まれ、9 が含まれていない場合、入力は整数に対して true を返します。

例: 123456789false を返す必要があり、 の入力は12345678true を返す必要があります12345678

これにはどの正規表現を使用する必要がありますか?

私は用語を知って7+おり[^9]、関与していますが、それらの特定の条件で数値全体に対して true を返すようにする方法が完全にはわかりません (に対して true を返したい場合、123456 9 の7+[^9]入力で true を返します)。123456787812345678

質問の言い方が悪かったらすみません。

4

2 に答える 2

3

次のようなものを試すことができます:^[0-8]*7[0-8]*$

于 2013-04-18T15:11:23.713 に答える
0

数字の中に少なくとも 1 つの 7 をアサートするために、肯定的な先読みを行うことができます。

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

最初の部分(?=.*7)はゼロ幅アサーションで、少なくとも 1 つの 7 があることをテストします。これは、パターン.*7が存在することをアサートすることによって行われます。つまり、7 が後に続くものすべてです。

2 番目の部分[0-8]++では、数値のすべての桁が 0 ~ 8 であることを確認します。は++、1 つ以上の文字の所有格一致です。したがって、数字は少なくとも 1 桁の長さである必要があります。

編集

@AbsoluteƵERØ によるコメントに対処するために、数値が実数であることを確認したい場合、つまり最初の桁がゼロでないことを確認したい場合は、単純にそれもアサートできます。

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