0

JSで正規表現を記述して、最大7回までの任意の数字、「-」、2桁、「-」、1桁を認識しようとしています。これは私が持っている単純な正規表現です:

/\d{1,7}-\d{2}-\d/g

これは、次のような文字列と一致する必要があります。

  • 123-12-7
  • 1-12-7
  • 1234567-12-7

だがしかし12345678-12-1

ただし、上記はtrueを返しています。最初のグループに任意の桁数がある場合、正規表現はtrueを返します。

JavaScript正規表現オブジェクトは{n、m}をサポートしていませんか?

これが私が話していることの例です。

var pattern = new RegExp(/\d{1,7}-\d{2}-\d/);
alert(pattern.test("12345678-13-1"));

http://jsfiddle.net/XTRAc/1/実例

4

5 に答える 5

6

一致し2345678-13-1ます。文字列の最初と最後に固定する必要があります。

/^\d{1,7}-\d{2}-\d$/

ただし、(Rocket Hazmatが指摘したように)RegExp正規表現リテラル(文字列引用符のないもの)を使用する場合は、コンストラクターを使用する必要がないことに注意してください。

JSFiddle

于 2012-11-15T15:49:23.537 に答える
4

{min,max}-syntaxをサポートしますが.match.test()一致するサブストリングを見つけようとします。開始アンカーと終了アンカーを含める必要があります。また、RegExpコンストラクターを使用して文字列または正規表現リテラルから正規表現を作成する必要がありますが、両方を使用する必要はありません(MDN:正規表現の作成を参照)。

/^\d{1,7}-\d{2}-\d$/
new RegExp("^\\d{1,7}-\\d{2}-\\d$") // the worse choice
于 2012-11-15T15:48:19.343 に答える
1

正規表現を正しく作成していません。これを試してください(文字列がパターンだけで構成されていることを確認するアンカーに注意してください):

var pattern= /^\d{1,7}-\d{2}-\d$/;

それ以外の場合、既存の文字列のサブセットは正規表現と一致します。

于 2012-11-15T15:48:51.630 に答える
1

入力文字列全体を検証する必要がある場合は、正規表現パターンを使用してください

/^\d{1,7}-\d{2}-\d$/

入力文字列の行全体を検証する必要がある場合は、正規表現パターンを使用してください

/^\d{1,7}-\d{2}-\d$/mg

入力文字列内で一致するものを見つける必要がある場合は、正規表現パターンを使用してください

/(?:\D|^)(\d{1,7}-\d{2}-\d)(?!\d)/g

...そして$1結果として使用します。

于 2012-11-15T16:04:52.967 に答える
0

{n、m}の部分をサポートします。ここでの問題は、例が一致2345678することです。したがって、最初の数字のセットの前に文字を一致させる方法が必要になります。

于 2012-11-15T15:51:47.353 に答える