这是一个有趣的 - 我正在寻找一个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;”
基本上从1XYZ开始提取任何东西,直到它遇到'evt'。
答案 0 :(得分: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;"
答案 1 :(得分: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;"]
答案 2 :(得分:0)
使用组((...)
)捕获匹配字符串的部分内容。成功匹配后,可以通过String.match
或Regex.exec
返回的数组访问捕获的子字符串。
数组的第一个元素(索引0)是整个匹配,下一个(索引1)是第一个捕获。
例如
var re = /1XY(.*)evt/
var result = theString.match(re)
然后,如果匹配(result
不为空)则
result[0]
将是整个匹配(从1XY
开始到evt
结束)
result[1]
将是这些字符串之间的文本。