我想从中间字符串中提取带有可选结束字符的字符。如果找不到可选的结束符,请提取到字符串末尾。前一个字符为S =,最后一个可选字符为&。
示例1:
"rilaS=testingabc"
应提取:
"testingabc"
示例2:
"rilaS=testing123&thistest"
应提取:
"testing123"
这是我到目前为止的内容(JavaScript):
var Str = "rilaS=testing123&thistest";
var tmpStr = Str.match("S=(.*)[\&]{0,1}");
var newStr = tmpStr[1];
alert(newStr);
但是它没有检测到结尾应该是“&”号(如果找到)。先谢谢你。
答案(通过ggorlen)
var Str = "rilaS=testing123&thistest";
var tmpStr = Str.match("S=([^&]*)");
var newStr = tmpStr[1];
alert(newStr);
答案 0 :(得分:4)
您可以使用/S=([^&]*)/
从S=
抓到行尾或&
:
["rilaS=testingabc", "rilaS=testing123&thistest"].forEach(s =>
console.log(s.match(/S=([^&]*)/)[1])
);
答案 1 :(得分:0)
以防万一您想知道为什么为什么原来的正则表达式不起作用:问题是(。*)模式是 greedy -这意味着它会很高兴地掉下来包括&在内的所有内容,请勿将其留给以后的项目匹配。这就是为什么您想要“ not&”的原因-它可以匹配,但不包括&。