我发现非常相似的帖子,但我不能得到我的正则表达式在这里。
我试图写一个正则表达式,返回一个字符串,在两个其他字符串之间。例如:我想得到字符串“牛”和“牛奶”之间的字符串,
My cow always gives milk
会返回
“always gives”
这里是我拼凑在一起的表达式:
(?=cow).*(?=milk)
但是这返回字符串“cow always give”
解
我能够得到我需要使用下面的Martinho Fernandes的解决方案。确切的代码是:
var test = "My cow always gives milk"; var testRE = test.match("cow(.*)milk"); alert(testRE[1]);
你会注意到,我正在警告testRE变量作为一个数组。这是因为testRE因为某种原因作为数组返回。输出:
My cow always gives milk
更改为:
always gives
前瞻((?= part)不消耗任何输入。它是一个零宽度断言(如边界检查和后瞻)。
你想在这里定期匹配,消耗牛部分。要捕获之间的部分,您使用捕获组(只需将要捕获的模式的部分放在括号中):
cow(.*)milk
根本不需要前瞻。