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

正则表达式是/\bT\.(\d+)\./g. 我的正则表达式不起作用的原因是我没有考虑到字符串开头的空格。

无论如何,在使用这个正则表达式后,得到了具有所需数字的子字符串,并使用 join() 将所有内容合并在一起。

感谢 Rob W 的回答。

于 2013-03-02T18:00:19.503 回答
1

与任何正则表达式一样,有无限可能的解决方案可以让事情飞起来。在下面的 main.js 中查找parseValues(...)函数。

jsFiddle这里:http: //jsfiddle.net/uwe_guenther/rYSwx/

索引.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 回答