这不会返回我或regex101所期望的内容:
var myString = "Accel World|http://www.anime-planet.com/anime/accel-worldAh! My Goddess|http://www.anime-planet.com/anime/ah-my-goddess";
var reg = /[^|]*/g;
var regResponse = reg.exec(myString);
console.log(regResponse);
根据regex101,这应该匹配除“|”之外的所有内容然后返回它只匹配第一个字符串Accel World,而不是“|”之外的所有字符串。
我该如何解决这个问题?
答案 0 :(得分:3)
Exec一次只会返回一个结果(后续调用将返回其余结果,但您还需要使用+
代替*
)
您可以使用myString.match(reg)
htough一次性获得所有结果。
var myString = "Accel World|http://www.anime-planet.com/anime/accel-worldAh! My Goddess|http://www.anime-planet.com/anime/ah-my-goddess";
var reg = /[^|]+/g;
var regResponse = myString.match(reg);
console.log(regResponse);
答案 1 :(得分:1)
尝试" +"而不是" *"
所以,
var reg = /[^|]+/g;
答案 2 :(得分:1)
您需要循环.exec()
以检索所有匹配项。 documentation说
如果正则表达式使用“g”标志,则可以使用exec() 方法多次在同一个字符串中查找连续匹配。
var reg = /[^|]+/g;
while(regResponse = reg.exec(myString)) {
console.log(regResponse);
}