使用JavaScript查找每一行中的模式

Find pattern in every line with JavaScript

本文关键字:一行 模式 JavaScript 查找 使用      更新时间:2023-09-26

假设我有以下字符串

def name1
 toSomething
def name2 
  toSomethingElse

我怎样才能找到name1name2

使用string.match(/(?:def) (.*)/)给我:

name1
 toSomething
def name2 
  toSomethingElse

那么我如何逐行搜索字符串呢?

您可以尝试使用:

/(?:def)'s+([^'s]+)/g

在第一组中,您将获得所需的内容(name1等)。

请参见此处:http://regex101.com/r/rH0yH8

如何运行它的示例:

var s = "def name1'ntoSomething'n'ndef name2 'ntoSomethingElse"
var re = /(?:def)'s+([^'s]+)/g
while (x = re.exec(s)) {
    alert(x[1])
}
/^def (.*)/gm

g标志匹配每个实例,m标志使^在行的开头匹配,而不是仅在输入的开头匹配。

使用.exec,您可以循环并一次获得一个结果。

var myString = 'def foo'n  boo'n'ndef bar'n  far'n';
for (var re = /^def (.*)/gm, match; (match = re.exec(myString));) {
  alert(match[1]);
}

或者,您可以在字符串上使用.match来获得一个数组中的所有结果,但这并不能为您提供捕获组。

var myString = 'def foo'n  boo'n'ndef bar'n  far'n';
var re = /^def (.*)/gm;
var matches = myString.match(re);

您的正则表达式应该只在第一行给出匹配项,因为.与换行符不匹配。

也就是说,尝试/(?:def)'s+('S*)/