1

これは、Perl 互換の正規表現でどのように見えるかです ( https://stackoverflow.com/a/4824952/377920から取得):

(?:(?<!\d)\d{1,3}(?!\d))

ただし、明らかに Javascript にはいくつかの正規表現機能が欠けているため、これは機能しません。

両端に白以外の文字を持つことができる1〜3個の長い接続された数字を一致させようとしています.

「Road 12A55, 10020」などは、12 と 55 に一致します。

4

4 に答える 4

4

その通りです。JavaScript は後読みをサポートしていません。

3 桁以下のシーケンスを検出しようとしているようです。周囲のコンテキストが何であるかに応じて、代わりにこれを使用できる場合があります。

/(?:^|\D)\d{1,3}(?:\D|$)/
于 2013-02-07T19:41:31.010 に答える
4

後読みせずに式を書き直すことができます。グループ 1 を取得するようにしてください。

/(?:^|\D)(\d{1,3})(?!\d)/
于 2013-02-07T19:41:49.223 に答える
2

Javascript は をサポートしていないためlook-behinds、正規表現が機能しませんでした。

この代替手段を試すことができます: -

/(?:^|\D)(\d{1,3})(?!\d)/

を取得しgroup 1ます。

于 2013-02-07T19:42:48.727 に答える
1

これは12と55を返します:

var output = 'Road 12A55, 10020'.replace(/D+|\d{4,}/g, ' ').match(/\d+/g)

alert(output)
于 2013-02-07T20:50:50.567 に答える