我需要一点帮助来编写正则表达式。
我需要查找以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]+[\.]
,但它对我不起作用。对我们说好话,我只是想在这里学习......
答案 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);