繁体   English   中英

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

[英]Javascript regular expression to extract characters from mid string with optional end character

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

但是它没有检测到结尾应该是“&”号(如果找到)。 先谢谢你。

答案(通过gorgoren)

var Str = "rilaS=testing123&thistest";
var tmpStr = Str.match("S=([^&]*)");
var newStr = tmpStr[1];
alert(newStr);

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

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

以防万一,您想知道为什么原来的正则表达式不起作用:问题是(。*)模式贪婪 -意味着它会愉快地吞噬包括&在内的所有内容,并且不留给以后的项目匹配。 这就是为什么您想要“ not&”的原因-它可以匹配,但不包括&。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM