0

这是一个有趣的 - 我正在寻找一种 JavaScript 正则表达式解决方案来从字符串中提取不同的部分。非常感谢任何输入。

例子 -

";1XYZ123_UK;1;2.3;evt14=0.0|evt87=0.0,;1XYZ456_UK;4;5.6;evt14=0.0;fly;0;0;;;"

我试图从字符串中提取这些位而忽略其余部分-

“1XYZ123_UK;2;3;1XYZ456_UK;4;5.6;”</pre>

基本上提取以 1XYZ 开头的任何内容,直到遇到“evt”。

4

3 回答 3

1
var s= ";1XYZ123_UK;1;2.3;evt14=0.0|evt87=0.0,;1XYZ456_UK;4;5.6;evt14=0.0"

s = s.replace(/(evt.+?(?:\||;|$))/g, "");

console.log(s) // ";1XYZ123_UK;1;2.3;1XYZ456_UK;4;5.6;"
于 2013-02-25T11:30:12.603 回答
1
var s = ';1XYZ123_UK;1;2e.3;evt14=0.0|evt87=0.0,;1XYZ456_UK;4;5.6;evt14=0.0';
var r = s.match(/1XYZ((?!evt).)*/g);

会给你你想要的字符串:

["1XYZ123_UK;1;2e.3;", "1XYZ456_UK;4;5.6;"]
于 2013-02-25T11:35:19.723 回答
0

使用组 ( (...)) 捕获部分匹配字符串。成功匹配后,可以通过从String.matchor返回的数组访问捕获的子字符串Regex.exec

数组的第一个元素(索引 0)是整个匹配,下一个(索引 1)是第一个捕获。

例如。

var re = /1XY(.*)evt/
var result = theString.match(re)

那么,如果有匹配项(result不为空),那么

result[0]

将是整个比赛(开始1XY和结束evt),而

result[1]

将是这些字符串之间的文本。

于 2013-02-25T11:29:59.170 回答