gpt4 book ai didi

javascript - 获取匹配字符串后的数字和字符

转载 作者:行者123 更新时间:2023-11-30 12:16:57 28 4
gpt4 key购买 nike

我正在尝试获取匹配字符串后的值:

Empregados/Avulsos 2.912,30
Empregados/Avulsos 7.310,06

有时值中会有字符串。

这可以用正则表达式吗?

我是这样尝试的:

    var match = data.replace(/\s\s+/g, ' ');

var match_two = match.match([\n\r][ \t]*Retenção Lei 9.711/98[ \t]*([^\n\r]*));
console.log(match_two);

首先,我将所有空格替换为一个。然后我尝试获取值 'Retenção Lei 9.711/98'。但输出是 '2'

我想制作一个正则表达式,在这些示例中始终获取下一个单词或数字:

Hour: get 12:12
Data: get 24/08
Solicitação get 2.912,30
Empregados/Avulsos get 1.452,00
Palavras separadas get 2.912,30

单词:

'Solicitação',
'Retention xxx 9.999/99'
'Compensation'
'TET':
'VALUE - SOCIAL PREVÎ',
'VALUE - OTHERS',
'TOTAL TO GET',
'TABLES',
'COD GPX:',
'FXGE:',
'ALIX DC:',
'RXG AJUST',
'DATA:',
'HOUR:',

最佳答案

我将解决以下问题。您有一段包含单词和各种数字的文本。给定一个任意子字符串,您想要找到该子字符串的第一次出现并提取其后的第一个数字。

例如,如果子字符串是 'Total',您可能希望使用此正则表达式:

/Total.*?(\d\S*)/

让我分解一下:

  • Total 就是你要找的子串
  • .* 表示您正在寻找任何字符零次或多次
  • ? 表示要匹配尽可能少的字符
  • ( 打开捕获组:这些是你要提取的字符
  • \d 匹配一个数字
  • \S* 匹配除空白字符之外的任何内容,零次或多次
  • ) 关闭捕获组

请注意,. 匹配除行结束字符(如 \n\r 之外的任何字符。如果您的文本包含此类字符,您需要在应用上述正则表达式之前将它们替换为可见的空格字符 (' ')。如果您的文本分配给变量 text,您可以执行以下操作以将所有空白字符(包括行结束字符)替换为可见空格:

text = text.replace(/\s/g, ' ');

还有一点很重要,/Total.*?(\d\S*)/是一个固定的正则表达式。如果您想为任何给定的子字符串创建正则表达式,则必须使用 RegExp 构造函数对其进行编译:

var re = new RegExp(substring + '.*?(\\d\\S*)');

请注意,我们将一个字符串传递给构造函数,因此我们必须在指定正则表达式时转义斜线。我们在文字正则表达式中写 \d\S 的地方,我们必须在字符串中写 \\d\\S

我们可以使用 exec 在字符串上执行编译后的正则表达式方法,测试结果是否为null,最后得到捕获组的内容:

var match = re.exec(text);
if (match === null) {
return '';
}
return match[1];

下面的代码片段在名为 getNumberAfterSubstring(substring, text) 的函数中实现了这个过程。单击代码下方的蓝色按钮可以看到它在一段示例文本和一些示例子字符串上运行。

function print(s) {
document.write(s + '<br />');
}

function getNumberAfterSubstring(substring, text) {
var re = new RegExp(substring + '.*?(\\d\\S*)'),
match = re.exec(text);
if (match === null) {
return ''; // If no match is found, return empty string.
}
return match[1]; // Otherwise return first parenthesized group.
}

var text = "Tabela 25 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ultricies ultricies auctor. Donec sodales pharetra ante, vitae suscipit metus mollis quis. Lorem ipsum dolor sit amet, Retention Law 0.000/00 consectetur adipiscing elit. Nunc nisl dui, Compension 00,00 ullamcorper eget posuere et, faucibus ut leo. Ut tellus nisi, lobortis eget nibh id, laoreet tincidunt lacus. Integer eget libero Value - Social prevî: 715,86 ut nulla vestibulum viverra eget sit Value - Others: 715,86 amet nisi. Suspendisse potenti.\nCurabitur ligula felis, Data: 02/02/2011 scelerisque in consequat et, tempor non ipsum. Donec euismod, turpis ut accumsan lobortis, lectus felis ullamcorper nibh, et pretium lectus nisl at enim. Total to pay 863,37 Nullam faucibus massa vitae nulla ultrices, eu sollicitudin justo imperdiet. Phasellus at est scelerisque, egestas diam et, rutrum dui. Hour: 15:44:58 Nunc sagittis hendrerit dui, sit amet congue arcu efficitur eu. Praesent hendrerit ut nibh vel vehicula. Morbi mollis enim ex, at mollis libero pellentesque quis. Etiam sed bibendum nisi. COD GPS: 2100 In hac habitasse platea dictumst. Morbi ac condimentum eros, in egestas tellus.";

text = text.replace(/\s/g, ' '); // Replace line-ending characters.
text = text.toLocaleLowerCase();

var substrings = ['Retention Law', 'Compension', 'VALUE - SOCIAL PREVî',
'Total', 'Tabela', 'Hour', 'Data'];

for (var i = 0; i < substrings.length; ++i) {
var substring = substrings[i].toLocaleLowerCase();
print(substring + ': ' + getNumberAfterSubstring(substring, text));
}

关于javascript - 获取匹配字符串后的数字和字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32189165/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com