63

文字列に文字としてのみ含まれるように正規表現を作成しようとしています。0-9長さは少なくとも1文字で、45. したがって、例は00303039一致しますが、一致し039330a29ません。

これまでのところ、これは私が持っているものですが、それが正しいかどうかはわかりません

[0-9]{1,45} 

私も試してみました

^[0-9]{45}*$

しかし、それもうまくいかないようです。私は正規表現にあまり詳しくないので、どんな助けも素晴らしいでしょう。ありがとう!

4

8 に答える 8

170

アンカーの開始 ( ^) とアンカーの終了 ( $) だけです。

^[0-9]{1,45}$

\d文字クラスの略です[0-9]。次のように使用できます。

^\d{1,45}$

アンカーは、パターンが入力の一部だけでなく、入力全体に一致するように強制します。


正規表現[0-9]{1,45}は 1 ~ 45 桁を検索するため、文字列 like foo1も含まれているため一致します1

^[0-9]{1,45}は 1 ~ 45 桁を探しますが、これらの桁は入力の先頭にある必要があります。似合い123ますが、123foo

[0-9]{1,45}$は 1 ~ 45 桁を探しますが、これらの桁は入力の末尾にある必要があります。似合い123ますが、foo123

^[0-9]{1,45}$は 1 ~ 45 桁を探しますが、これらの桁は入力の最初と最後にある必要があり、実質的には入力全体である必要があります

于 2010-10-19T12:00:17.873 に答える
14

ゼロから始めたくない場合は、次の正規表現を使用します。

^[1-9]([0-9]{1,45}$)

ゼロから始めても構わない場合は、次を使用します。

^[0-9]{1,45}$
于 2013-07-11T08:14:31.990 に答える
14

1 つ目は、文字列内の任意の桁数に一致します (他の文字も許可されます。例: "039330a29")。2 番目は 45 桁のみを許可します (それ以下ではありません)。したがって、両方から良い方を選択してください。

^\d{1,45}$

\dように同じです[0-9]

于 2010-10-19T12:00:50.563 に答える
5

codaddictは正しい答えを提供しました。あなたが試したことについては、なぜ彼らがカットを行わないのかを説明します:

  • [0-9]{1,45}ほぼそこにありますが、他の文字を含む別の長い文字列内にある場合でも、 1〜45桁の文字列と一致します。したがって、完全に一致するように制限する必要が^あります。$

  • ^[0-9]{45}*$正確に45桁の文字列に一致し、0回または任意の回数(*)を繰り返します。つまり、文字列の長さは0または45の倍数(90、135、180 ...)のみにすることができます。

于 2010-10-19T12:03:24.090 に答える
4

両方の試行の組み合わせが、おそらく必要なものです。

^[0-9]{1,45}$
于 2010-10-19T12:01:09.573 に答える
2

セキュリティ上の理由から、Rails は ^ と $ の使用を好みません。文字列の先頭と末尾を設定するには \A と \z を使用する方がよいでしょう。

于 2014-04-05T13:25:36.053 に答える
2

^[0-9]{1,45}$正しい。

于 2010-10-19T12:00:55.650 に答える