gpt4 book ai didi

Javascript 字符串匹配特定的正则表达式

转载 作者:行者123 更新时间:2023-11-29 17:36:23 25 4
gpt4 key购买 nike

我想从这个变量中匹配特定的字符串。

var string = '150-50-30-20=50+skip50-20-10-5=15+1*2*3*4=24+50-50*30*20=0+skip2*4*8=64';

这是我的正则表达式:

var string = '150-50-30-20=50+skip50-20-10-5=15+1*2*3*4=24+50-50*30*20=0+skip2*4*8=64';

var match_data = [];

match_data = string.match(/[0-9]+(?:((\s*\-\s*|\s*\*\s*)[0-9]+)*)\s*\=\s*[0-9]+(?:(\s*\+\s*[0-9]+(?:((\s*\-\s*|\s*\*\s*)[0-9]+)*)\s*=\s*[0-9]+)*)/g);

console.log(match_data);

输出会显示

[
0: "150-50-30-20=50"
1: "50-20-10-5=15+1*2*3*4=24+50-50*30*20=0"
2: "2*4*8=64"
]

我想从string变量中匹配的结果只有

 [
0: "150-50-30-20=50"
1: "1*2*3*4=24"
2: "50-50*30*20=0"
]

最佳答案

您可以在 (\d+(?:\s*[-*\/+]\s* 之前使用 ((?:\+|^)skip)? 捕获组\d+)*\s*=\s*\d+) 在模式中,找到每个匹配项,只要第 1 组不是未定义的,就跳过(或忽略)该匹配项,否则,获取第 2 组值。

var string = '150-50-30-20=50+skip50-20-10-5=15+1*2*3*4=24+50-50*30*20=0+skip2*4*8=64', 
reg = /((?:^|\+)skip)?(\d+(?:\s*[-*\/+]\s*\d+)*\s*=\s*\d+)/gi,
match_data = [],
m;
while(m=reg.exec(string)) {
if (!m[1]) {
match_data.push(m[2]);
}
}
console.log(match_data);

请注意,我向模式添加了 /+ 运算符 ([-*\/+])。

正则表达式详细信息

  • ((?:^|\+)skip)? - 第 1 组(可选):出现 1 次或 0 次 +skipskip 在字符串的开头
  • (\d+(?:\s*[-*\/+]\s*\d+)*\s*=\s*\d+) - 第 2 组:
    • \d+ - 1+ 位
    • (?:\s*[-*\/+]\s*\d+)* - 零次或多次重复
      • \s*[-*\/+]\s* - -, *, / , + 包含 0+ 个空格
      • \d+ - 1+ 位
    • \s*=\s* - = 包含 0+ 个空格
    • \d+ - 1+ 位数字。

关于Javascript 字符串匹配特定的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56111041/

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