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

问题描述:

我需要一些帮助来编写正则表达式。正则表达式匹配所有以T开头的字符串

我需要找到以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]+[\.]但它并没有为我工作。去我的家伙轻松,我只是想在这里学习...

+1

我不能看到一个理由去'T'括号。 – 2013-03-02 17:21:42

+0

我一开始没有使用括号就试过,但它没有起作用,所以我想也许加入括号可以解决问题。顺便说一句,谢谢你回答,而不是对我进行投票:) – r3x 2013-03-02 17:23:50

+2

'var regex =/\ bT \。(\ d +)\ ./ g,match,result = []; while((match = regex.exec(string)) ){if(result.indexOf(match [1])== - 1)result.push(match [1]);}/*现在你的列表可用于结果* /'(投票结果为Too Localized; edit :注意:Stack Overflow在前面的代码块中添加了一个不可见的零宽度字符,练习读者将其删除以获得有效的代码) – 2013-03-02 17:53:06

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

不管怎么说,在使用这个正则表达式后,得到的子字符串具有所需的数字,并使用join()将所有的东西合并在一起。

谢谢罗布W回答。

删除$正则表达式?显然你不是整条线。

+1

尝试http://regexpal.com/来测试各种正则表达式 – 2013-03-02 17:25:07

+0

感谢您的链接和提示 – r3x 2013-03-02 17:29:53

+0

你是对的“$”不应该在那里,不知道为什么我添加它。就这样说,正则表达式仍然不起作用,我仍然得到NULL。 – r3x 2013-03-02 17:46:48

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