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