我想这应该很容易,但我至少坚持了2个小时,我觉得在这里问这个问题会更好。
所以,我有一个注册表达式/&t=(\d*)$/g
,它在网址中不是?t
而不是&t
时工作正常。我尝试过不同的组合,例如/\?|&t=(\d*)$/g
; /\?t=(\d*)$|/&t=(\d*)$/g
; /(&|\?)t=(\d*)$/g
和其他各种人。但是没有得到预期的结果,即/\?t=(\d*)$/g
或/&t=(\d*)$/g
url部分(无论输入什么)。
响应的Thx。我认为需要在这里提供一些细节。我实际上正致力于这种代码的和平
var formValue = $.trim($("#v").val());
var formValueTime = /&t=(\d*)$/g.exec(formValue);
if (formValueTime && formValueTime.length > 1) {
formValueTime = parseInt(formValueTime[1], 10);
formValue = formValue.replace(/&t=\d*$/g, "");
}
我希望获得t
值,无论引用是通过&t
还是?t
引用,如youtu.be/hTWKbfoikeg?t=82
或类似youtu.be/hTWKbfoikeg&t=82
答案 0 :(得分:2)
要替换,您可以使用
var formValue = "some?some=more&t=1234"; // $.trim($("#v").val());
var formValueTime;
formValue = formValue.replace(/[&?]t=(\d*)$/g, function($0,$1) {
formValueTime = parseInt($1,10);
return '';
});
console.log(formValueTime, formValue);
要获取该值,您可以使用
/[?&]t=(\d*)$/g.exec(formValue);
模式详情
[?&]
- 与?
或&
t=
- t=
substring (\d*)
- 第1组匹配零个或多个数字$
- 字符串结尾答案 1 :(得分:0)
答案 2 :(得分:0)
我想感谢所有人帮助。特别感谢@WiktorStribiżew给出了最接近的答案。
现在我需要的代码看起来完全像这样:
/[?&]t=(\d*)$/g.exec(formValue);
这就是解决问题的[?&]
部分。
我稍后使用数组,所以/\?t=(\d*)|\&t=(\d*)$/g
无效,因为当引用为[t&=50,,50]
类型时,我会得到类似&
的数组,而当引用为{{1时,我得到正确答案[t?=50,50]
因为RegExp中的语句顺序而输入。
现在,如果您正在寻找一个RegExp,它可以在一个地方选择任一个字符,而RegExp的其余部分保持不变,那么您可以使用类似于?
的smth作为所需字符为{{ 1}}和[?&]
。