正则表达式匹配所有以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]+[\.]
但它并没有为我工作。去我的家伙轻松,我只是想在这里学习...
答
正则表达式是/\bT\.(\d+)\./g
。我的正则表达式不起作用的原因是我没有考虑字符串开头的空格。
不管怎么说,在使用这个正则表达式后,得到的子字符串具有所需的数字,并使用join()将所有的东西合并在一起。
谢谢罗布W回答。
答
与任何正则表达式一样,有无限可能的解决方案来让事情飞行。在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);
我不能看到一个理由去'T'括号。 – 2013-03-02 17:21:42
我一开始没有使用括号就试过,但它没有起作用,所以我想也许加入括号可以解决问题。顺便说一句,谢谢你回答,而不是对我进行投票:) – r3x 2013-03-02 17:23:50
'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