Javascript正则表达式,用于从带有可选结尾字符的中间字符串中提取字符

Javascript正则表达式,用于从带有可选结尾字符的中间字符串中提取字符,javascript,regex,Javascript,Regex,我想用可选的结束字符从中间字符串中提取字符。如果未找到可选的结束字符,请提取到字符串的结尾。第一个字符是S=,最后一个可选字符是& 示例#1: 应摘录: "testingabc" "testing123" 示例2: 应摘录: "testingabc" "testing123" 这就是我到目前为止所拥有的(Javascript): 但它没有检测到末端应该是符号(如果找到)。谢谢大家 回答(由戈伦) 您可以使用/S=([^&]*)/从S=抓取到行尾或&: [“rilaS=testingab

我想用可选的结束字符从中间字符串中提取字符。如果未找到可选的结束字符,请提取到字符串的结尾。第一个字符是S=,最后一个可选字符是&

示例#1:

应摘录:

"testingabc"
"testing123"
示例2:

应摘录:

"testingabc"
"testing123"
这就是我到目前为止所拥有的(Javascript):

但它没有检测到末端应该是符号(如果找到)。谢谢大家

回答(由戈伦)

您可以使用
/S=([^&]*)/
S=
抓取到行尾或
&

[“rilaS=testingabc”,“rilaS=testing123&thistest”]。forEach(s=>
console.log(s.match(/s=([^&]*)/)[1])

);以防您想知道原始正则表达式为什么不起作用:问题在于(.*)模式是贪婪的-这意味着它会很高兴地吞下任何东西,包括&,而不是留给以后的项目来匹配。这就是为什么您希望“not&”-它将匹配到,但不包括&

Str.match(“S=(.*)[\&]”是否不足?
var Str = "rilaS=testing123&thistest";
var tmpStr = Str.match("S=(.*)[\&]{0,1}");
var newStr = tmpStr[1];
alert(newStr);
var Str = "rilaS=testing123&thistest";
var tmpStr = Str.match("S=([^&]*)");
var newStr = tmpStr[1];
alert(newStr);