我想帮助您在JavaScript中进行正则表达式匹配
仅匹配数字:
我将使用的文字:
{{1}}
答案 0 :(得分:2)
试试这个:
/(2[5-9]|[3-9][0-9])%(?=.*\n.*Apples)/g
答案 1 :(得分:1)
不确定正则表达式,但我认为以下内容在查找数字和行方面做得非常好:
var str = `29% OK
First | Cocoa Apples are
23% NOT
Second | Test Text
18% NOT
Third | Mango Alpa Tango
16% NOT
Fourth | Apples are
33% OK
Fifth | Text Testing App
10% NOT
Sixth | Apples are Gold Duck
28% OK
Seventh | Alpa Apples are Tango
66% OK
Eighth | Oh My Apples are Avocado
20% NOT
Ninth | This Is My Text
25% NOT
Tenth | This Is Hard`;
var bigger = false;
str.split("\n").forEach(function(row, i) {
if (i % 2 == 0 && parseInt(row.replace(/\\D/g, ""), 10) >= 25) {
bigger = true;
} else {
if (bigger) {
bigger = false;
if (row.indexOf("Apples") > -1) {
console.log("match in line " + i );
}
}
}
});

答案 2 :(得分:1)
此处,它应该可以作为您的请求
^(?:(?:.*\n){2})*?((?:2[6-9]|[3-9][0-9]|100)).*\n.*Apples
<强>说明强>
^(?:(?:.*\n){2})*?
匹配零线或偶数行,
((?:2[6-9]|[3-9][0-9]|100))
组的百分比,大于25到变量\1
,
.*\n.*Apples
匹配包含"Apples"
个字词的行。
见DEMO
请注意,由于javascript中的lookbehind存在一些限制,因此捕获百分比数比获取它更方便。
更直接的方式
(?:2[6-9]|[3-9][0-9]|100)(?=.*\n.*Apples)
我认为这种方法比第一种方法更容易,因为你不需要处理像#34; odd&#34;这样的花哨字样。或者&#34;偶数&#34;。
见DEMO
答案 3 :(得分:1)
使用
(2[5-9]|[3-9][0-9]|100)%.*\n.*Apples.*
如果您需要捕获所有文本。