2013-03-02 971 views
0

我需要一些幫助來編寫正則表達式。正則表達式匹配所有以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

回答

1

正則表達式是/\bT\.(\d+)\./g。我的正則表達式不起作用的原因是我沒有考慮字符串開頭的空格。

不管怎麼說,在使用這個正則表達式後,得到的子字符串具有所需的數字,並使用join()將所有的東西合併在一起。

謝謝羅布W回答。

1

刪除$正則表達式?顯然你不是整條線。

+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

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); 
相關問題