0

正確に 10 桁のブロックを一致させるために使用できる正規表現はありますか? たとえば、私はこれを持っています:

/\d{10}(?!\d+)/g

そして、これはうまく2154358383指定された場合に一致しますが、指定された場合に2154358383も一致しますが、これは望ましくありません。121314151612345678910111213141516

私が必要だと思うのは、一致の前の文字が整数ではないことを確認する後読みアサーション (既にそこにある先読みに加えて) ですが、その方法がわかりません。

私は試した

/(?:[^\d]+)\d{10}(?!\d+)/g

しかし、それは の最初の試合を中断し2154358383ました。これは悪いことです。

未知の境界を持つ 10 個の整数 (それ以上でも以下でもない) のグループのみに一致するようにこれを記述するにはどうすればよいでしょうか?

また、これらをはるかに大きな文字列から抽出しようとしていることに注意してください。したがって^、 と$は問題外です。

4

8 に答える 8

4

これは機能するはずです:([^\d]|^)\d{10}([^\d]|$)

于 2012-07-10T19:53:20.353 に答える
3

次のようなことをしてもらえますか?

([^\d]|^)(\d{10})([^\d]|$)

つまり、文字列の先頭または数字以外の10桁の数字、次に文字列の末尾または数字以外の数字です。これで、上記で探したケースが解決するはずです。

次のように正規表現を使用できます。

var regex = /([^\d]|^)(\d{10})([^\d]|$)/;
var match = regex.exec(s);
var digits = match[2];
于 2012-07-10T19:53:22.213 に答える
1

これは、文字列の先頭(the ^)または中間/末尾(the[^\d]および(?!\d)。試合のグループ。

/(?:[^\d]|^)(\d{10})(?!\d)/g

JavaScriptの正規表現が後読みをサポートしていれば、これは簡単です。

于 2012-07-10T19:54:04.273 に答える
1

次は?

perl -nle 'print if /(\b|\D)(\d{10})(\D|\b)/' <<EOF
123456789
x123456789
123456789x
1234567890
x1234567890
1234567890x
12345678901
x12345678901
x12345678901x
EOF

のみ印刷します

1234567890
x1234567890
1234567890x
于 2012-07-10T20:42:59.140 に答える
0

これを試して

var re = /(?:^|[^\d])(\d{10})(?:$|[^\d])/g

re.exec ( "2154358383")
//["2154358383", "2154358383"]
re.exec ( "12345678910111213141516" )
//null
re.exec ( "abc1234567890def" )
//["c1234567890d", "1234567890"]

val = '1234567890 sdkjsdkjfsl 2234567890 323456789000 4234567890';
re.exec ( val )
//["1234567890 ", "1234567890"]
re.exec ( val )
//[" 2234567890 ", "2234567890"]
re.exec ( val )
//[" 4234567890", "4234567890"]
re.exec ( val )
//null
于 2012-07-10T19:50:00.690 に答える
0

「いいえ^」と言ったのは知っていますが、次のように使用しても大丈夫ですか?:

rx = /(?:^|\D)(\d{10})(?!\d)/g

簡単なテストは次のとおりです。

> val = '1234567890 sdkjsdkjfsl 2234567890 323456789000 4234567890'
'1234567890 sdkjsdkjfsl 2234567890 323456789000 4234567890'
> rx.exec(val)[1]
'1234567890'
> rx.exec(val)[1]
'2234567890'
> rx.exec(val)[1]
'4234567890'
于 2012-07-10T19:58:22.230 に答える
-1

シンプルな後読み:

/(?<!\d)\d{10}(?!\d)/g
于 2012-07-10T19:55:34.840 に答える
-3

私はチートして次のようなことをします

if (myvar.toString().substring(1, 10) = "1234567890") ....

:)

于 2012-07-10T19:50:20.877 に答える