正则表达式匹配以T开头的所有字符串

时间:2013-03-02 17:00:59

标签: javascript regex dom google-chrome-extension

我需要一点帮助来编写正则表达式。

我需要查找以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]+[\.],但它对我不起作用。对我们说好话,我只是想在这里学习......

3 个答案:

答案 0 :(得分:1)

从正则表达式中删除$?显然你不匹配整条线。

答案 1 :(得分:1)

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

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

谢谢Rob W回答。

答案 2 :(得分:1)

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

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);