0

正規表現を書くのに少し助けが必要です。

T.で始まり、で終わる文字列のすべてのサブ文字列を見つける必要があります.(この場合、これらのサブ文字列は数字です)。これらの文字列は一意である必要があります。

例えば:

    T.220431.2 = 1.16363965404949
    T.220431.1 = 1.16363965404949
    T.3923331.2 = 0.335752950772576
    T.3923331.1 = 0.335752950772576
    T.4125531.2 = 0.335752950772576
    T.4125531.1 = 0.335752950772576

配列を取得したい{220431、392331、4124431}

何か案は?

前もって感謝します、

編集:私はたくさんの反対票を獲得しているので、私が使用しようとし^[T]\.[0-9]+[\.]たが、それは私にとってはうまくいかなかったと言いたかっただけです。気楽にやってください、私はここで学ぼうとしています...

4

3 に答える 3

1

正規表現から$を削除しますか?明らかにあなたは全行に一致することはありません。

于 2013-03-02T17:24:33.940 に答える
1

他の正規表現と同様に、物事を飛ばすための解決策は無限にあります。parseValues(...)以下の main.js で関数を探します。

jsFiddleはこちら: http://jsfiddle.net/uwe_guenther/rYSwx/

index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div id='output'></div>
    <script src='main.js'></script>
</body>
</html>

main.js

(function (document) {
    function parseValues(values) {
        var results = [];
        var regex = /T\.(\d+)?.*/;
        var len = values.length;
        var i;
        var result;
        for (i = 0; i < len; i++) {
            result = values[i].replace(regex, '$1');
            if (result) {
                if (results.indexOf(result) < 0) {
                    results.push(result);
                }
            }
        }
        return results;
    };

    function main() {
        var values = [
            'T.220431.2 = 1.16363965404949',
            'T.220431.1 = 1.16363965404949',
            'T.3923331.2 = 0.335752950772576',
            'T.3923331.1 = 0.335752950772576',
            'T.4125531.2 = 0.335752950772576',
            'T.4125531.1 = 0.335752950772576'
        ];
        var results = parseValues(values);
        var output = document.getElementById('output');
        var len = results.length;
        var i;
        for (i = 0; i < len; i += 1) {
            output.innerHTML += results[i] + '<br/>';
        }
    };

    main();

})(document);
于 2013-03-02T18:44:56.817 に答える
1

正規表現は/\bT\.(\d+)\./g. 正規表現が機能しなかった理由は、文字列の先頭にある空白を考慮していなかったためです。

とにかく、この正規表現を使用した後、必要な数字の部分文字列を取得し、 join() を使用してすべてをマージしました。

ロブ W さん、ご回答ありがとうございます。

于 2013-03-02T18:00:19.503 に答える