【问题标题】:regular expression match all strings that start with T [closed]正则表达式匹配所有以 T 开头的字符串 [关闭]
【发布时间】:2013-02-17 02:15:42
【问题描述】:

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

我需要找到以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]+[\.],但它对我不起作用。伙计们,放轻松,我只是想在这里学习......

【问题讨论】:

  • 我找不到在 T 周围加上括号的理由。
  • 我一开始尝试不带括号但没有用,所以我想也许添加括号可以解决问题。顺便说一句,感谢您的回答而不是对我投反对票:)
  • var regex=/\bT\.(\d+)\./g, match, result=[];while((match=regex.exec(string))){if(result.indexOf(match[1])==-1)result.push(match[1]);}/*Now your list is available in result*/ (投票关闭为Too Localized;编辑:注意:堆栈溢出在前面的代码块中添加了一个不可见的零宽度字符,读者可以练习删除它以获得有效代码)
  • 成功了。谢谢你,罗伯,我很感激。

标签: javascript regex dom google-chrome-extension


【解决方案1】:

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

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

感谢 Rob W 的回答。

【讨论】:

    【解决方案2】:

    与任何正则表达式一样,有无数种可能的解决方案可以让事情飞起来。在下面的 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);
    

    【讨论】:

      【解决方案3】:

      从正则表达式中删除 $?显然你没有匹配整行。

      【讨论】:

      • 尝试regexpal.com 测试各种正则表达式
      • 感谢您的链接和提示
      • 你是对的“$”不应该在那里,不知道我为什么添加它。话虽如此,正则表达式仍然不起作用,我仍然得到 NULL。
      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2016-07-12
      • 2019-10-15
      • 1970-01-01
      • 2011-01-08
      • 2015-04-27
      相关资源
      最近更新 更多