我需要一个JavaScript的正则表达式,以便在John
之后匹配Name:
(不区分大小写)
我知道怎么做,但我不知道如何从不同的行(从textarea)获取字符串:
Name
John
这就是我尝试做的事情:: var str = /\s[a-zA-Z0-9](?= Name)/;
逻辑:获取一个字符串,其中包含一个字母/数字,后跟名称。
然后,我会使用.test();
方法。
修改
我试图让问题变得更加简单。我不太明白的是我如何孤立" John" (实际上是任何东西)在一个新行后跟一个特定的字符串(在这种情况下是Name
)。
, IF John
来自Name
{dosomething} else {dosomethingelse}
答案 0 :(得分:2)
不幸的是,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
}
此外,如果您需要确保Name
和John
出现在单独的行中,而中间只有空格,则可以将此模式与多行(m
)一起使用标志。
var str = /Name\s*^\s*([a-zA-Z0-9]+)/m;
答案 1 :(得分:1)
此处不需要前瞻,只需在要匹配的字符前放置名称即可。要启用不区分大小写的匹配,请将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
中匹配/捕获的内容