Javascript 如果字符串位于某个字符串之后,则匹配该字符串
我需要一个JavaScript正则表达式来匹配Javascript 如果字符串位于某个字符串之后,则匹配该字符串,javascript,regex,Javascript,Regex,我需要一个JavaScript正则表达式来匹配Name:之后的John(不区分大小写) 我知道怎么做,但我不知道如何从其他行获取字符串,例如(从文本区域): 这就是我试图做的::var str=/\s[a-zA-Z0-9](?=Name)/ 逻辑:获取一个字符串,该字符串的行空间中有字母/数字,后跟名称 然后,我将使用.test()方法 编辑: 我试图使这个问题比本来应该的更简单。我不太明白的是,如何将“John”(真的是任何东西)分隔在一个新行上,后跟一个特定的字符串(在本例中是Name)
Name:
之后的John
(不区分大小写)
我知道怎么做,但我不知道如何从其他行获取字符串,例如(从文本区域):
这就是我试图做的::var str=/\s[a-zA-Z0-9](?=Name)/代码>
逻辑:获取一个字符串,该字符串的行空间中有字母/数字,后跟名称
然后,我将使用.test()代码>方法
编辑:
我试图使这个问题比本来应该的更简单。我不太明白的是,如何将“John”(真的是任何东西)分隔在一个新行上,后跟一个特定的字符串(在本例中是Name
)
例如,如果约翰
跟在名字
{dosomething}后面,或者{dosomethingelse}不幸的是,JavaScript不支持look behinds。对于这样简单的事情,您可以像这样匹配字符串的两个部分:
var str = /Name\s+([a-zA-Z0-9]+)/;
然后,如果要获取John
,只需提取第一个捕获组。例如:
"Name\n John".match(/Name\s+([a-zA-Z0-9]+)/)[1]; // John
var input = "Name\n John";
if (/Name\s+[a-zA-Z0-9]+/.test(input)) {
// dosomething
} else{
// dosomethingelse
}
但是,如果您只是使用.test
,则不需要捕获组。例如:
"Name\n John".match(/Name\s+([a-zA-Z0-9]+)/)[1]; // John
var input = "Name\n John";
if (/Name\s+[a-zA-Z0-9]+/.test(input)) {
// dosomething
} else{
// dosomethingelse
}
此外,如果您需要确保Name
和John
出现在单独的行中,中间只有空格,则可以将此模式与多行(m
)标志一起使用
您不需要在此处进行前瞻,只需将名称放在要匹配的字符之前即可。要启用不区分大小写的匹配,请将i
修饰符放在正则表达式的末尾
var str = 'Name\n John'
var re = /Name\s+[a-z0-9]+/i
if (re.test(str)) {
// do something
} else {
// do something else
}
如果要从字符串中提取名称,请使用字符串匹配
方法
'Name\n John'.match(/Name\s+([a-z0-9]+)/i)[1];
这里的[1]
引用了捕获组#1
@plalx中匹配/捕获的内容。(示例字符串只有空格)我同意OP看起来很困惑,因为他自相矛盾。“在Name:”之后匹配John(不区分大小写),然后是“逻辑:获取一个在行空间中后跟Name的字母/数字字符串”。@Matthew你能编辑这个问题来澄清你到底想要什么吗?您希望文本位于名称之后还是之前?它是否应该包含冒号(名称:
)?@Matthew好的,我提供了一个示例,希望对您有所帮助。然而,通过编辑,这听起来有点像一个错误。如果是这样的话,我建议您编写一个JSFIDLE来演示这个问题以及您迄今为止解决这个问题的最佳尝试,并将其包含在一个新的问题中,关于您实际要实现的目标。如果上下文有帮助,请包含一个指向此问题的链接。@p.s.w.g谢谢您的帮助!