只使用正则表达式javascript

时间:2017-07-19 19:47:21

标签: javascript regex

我想这应该很容易,但我至少坚持了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

3 个答案:

答案 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)

/\?t=(\d*)|\&t=(\d*)$/g

你倒转了第二个RegEx的转义字符。

http://regexr.com/3gcnu

答案 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}}和[?&]