Javascript Regexp - 在某个短语后匹配字符

bry*_*mon 36 javascript regex

我想知道如何使用正则表达式匹配某个匹配后的短语.喜欢:

var phrase = "yesthisismyphrase=thisiswhatIwantmatched";
var match = /phrase=.*/;
Run Code Online (Sandbox Code Playgroud)

这将匹配phrase=字符串的结尾,但是可以在phrase=不必修改字符串之后获取所有内容吗?

DVK*_*DVK 57

您使用捕获组(用括号表示).

通过match或exec函数执行regex时,返回一个由捕获组捕获的子串组成的数组.然后,您可以访问通过该阵列捕获的内容.例如:

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var myRegexp = /phrase=(.*)/;
var match = myRegexp.exec(phrase);
alert(match[1]);
Run Code Online (Sandbox Code Playgroud)

要么

var arr = phrase.match(/phrase=(.*)/);
if (arr != null) { // Did it match?
    alert(arr[1]);
}
Run Code Online (Sandbox Code Playgroud)

  • 是不是有办法避免使用`match [1]`? (3认同)

the*_*ejh 13

phrase.match(/phrase=(.*)/)[1]
Run Code Online (Sandbox Code Playgroud)

回报

"thisiswhatIwantmatched"
Run Code Online (Sandbox Code Playgroud)

括号指定所谓的捕获组.捕获组的内容将放入结果数组中,从1开始(0是整个匹配).

  • 重要的是要意识到`.match`如果匹配失败则返回`null`,所以在尝试获取第一个索引之前测试它是个好主意.此外,如果你在key = value字符串中有多个阶段,你可以将正则表达式更改为`/ phrase =(.*?)(; | $)/`where; 是分隔符.此外,您可以使用RegEx构造函数的方法对此进行抽象... (4认同)

Ame*_*icA 6

这并不难,只需假设您的上下文是:

const context = "https://example.com/pa/GIx89GdmkABJEAAA+AAAA";
Run Code Online (Sandbox Code Playgroud)

我们想要得到 后的模式pa/,所以使用以下代码:

const pattern = context.match(/pa\/(.*)/)[1];
Run Code Online (Sandbox Code Playgroud)

第一项包含pa/,但对于分组第二项不包含pa/,您可以使用您想要的每一项。