匹配出现在某个字符串之后的字符串

Match a string if it comes after certain string

本文关键字:字符串 之后      更新时间:2023-09-26

我需要一个JavaScript正则表达式来匹配Name:之后的John(不区分大小写)

我知道如何做到这一点,但我不知道如何从不同的行获得字符串,像这样(从一个textarea):

Name
  John

这就是我想做的::var str = /'s[a-zA-Z0-9](?= Name)/;

逻辑:获取一个字符串,其中字母/数字位于行间距后面,后跟Name。

那么,我将使用.test();方法。


编辑:

我试图使这个问题更简单。我不太明白的是,我如何将"John"(实际上是任何东西)隔离在一个新的行上,后面跟着一个特定的字符串(在本例中是Name)。


。, 如果 JohnName {dosomething} else{dosomethingelse}之后

不幸的是,JavaScript不支持向后查找。对于这么简单的内容,您可以像这样匹配字符串的两个部分:

var str = /Name's+([a-zA-Z0-9]+)/;

如果你想获得John,你只需要提取第一个捕获组。例如:

"Name'n John".match(/Name's+([a-zA-Z0-9]+)/)[1]; // John

但是,如果您只使用.test,则不需要捕获组。例如:

var input = "Name'n John";
if (/Name's+[a-zA-Z0-9]+/.test(input)) {
    // dosomething
} else{
    // dosomethingelse
}

此外,如果您需要确保NameJohn出现在单独的行中,中间只有空白,则可以将此模式与多行(m)标志一起使用。

var str = /Name's*^'s*([a-zA-Z0-9]+)/m;

这里不需要预先查找,只需将Name放在要匹配的字符之前。要启用不区分大小写的匹配,请将i修饰符放在正则表达式的末尾。

var str = 'Name'n   John'
var re  = /Name's+[a-z0-9]+/i
if (re.test(str)) {
  // do something
} else {
  // do something else
}

使用字符串。如果您想从字符串中提取名称,请使用match方法。

'Name'n   John'.match(/Name's+([a-z0-9]+)/i)[1];

这里的[1]指的是在捕获组#1中匹配/捕获的内容