Javascript正则表达式所有匹配
Javascript regex all matches
本文关键字:正则表达式 Javascript 更新时间:2023-09-26
我试图通过regex在我的源中找到一些东西,但我不能让它返回我需要的所有数据。我使用的正则表达式我已经在regex101上测试过了,我认为它工作得很好。
我的来源:
/**
* @author person1
* @author person2
*/
console.log('a');
我想要检索person1和person2。
我代码:fs.readdir('./src', function (err, files) {
for (var i = 0; i < files.length; i++ ) {
var file = files[i];
fs.readFile('./src/' + file, { encoding: 'utf-8' }, function (err, data) {
if (err)
throw err;
var matches = (/@author (.*)$/gm).exec(data);
console.log(matches);
});
}
});
运行时,只返回person1而不是person2。我的正则表达式是错的还是我错过了什么?
RegExp对象是有状态的,并保留最新匹配的索引,以便从那里继续。因此,您可能希望在循环中多次运行regex。
var match, authors = [];
var r = /@author (.*)$/gm;
while(match = r.exec(data)) {
authors.push(match[1]);
}
您也可以使用data.match(...)
,但这不会提取匹配组
现在你可以使用String.prototype.matchAll
const s = `
/**
* @author person1
* @author person2
*/
console.log('a');
`;
const re = /@author's+(.*)$/gm;
const people = [...s.matchAll(re)].map(m => m[1]);
console.log(people);
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 将这些正则表达式从javascript转换为Java
- 用于验证JS中逻辑运算符表达式的正则表达式