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

时间:2018-11-27 16:27:51

标签: javascript regex

我想从中间字符串中提取带有可选结束字符的字符。如果找不到可选的结束符,请提取到字符串末尾。前一个字符为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);

2 个答案:

答案 0 :(得分:4)

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

["rilaS=testingabc", "rilaS=testing123&thistest"].forEach(s =>
  console.log(s.match(/S=([^&]*)/)[1])
);

答案 1 :(得分:0)

以防万一您想知道为什么为什么原来的正则表达式不起作用:问题是(。*)模式是 greedy -这意味着它会很高兴地掉下来包括&在内的所有内容,请勿将其留给以后的项目匹配。这就是为什么您想要“ not&”的原因-它可以匹配,但不包括&。