Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当条件为真时匹配_Javascript_Regex_Validation - Fatal编程技术网

Javascript 仅当条件为真时匹配

Javascript 仅当条件为真时匹配,javascript,regex,validation,Javascript,Regex,Validation,我想获得有关使用JavaScript进行正则表达式匹配的帮助 仅匹配数字: 如果行(奇数)的数大于25,则行 在(偶数)之后有一个单词“苹果”。 说明: 第一行的值(29)属于第二行(“第一|可可苹果是”) 第三行的值(23)到第四行(“第二测试文本”)。。。等等 我将与之一起使用的文本: 29% OK First | Cocoa Apples are 23% NOT Second | Test Text 18% NOT Third | Mango Alpa Tango 16%

我想获得有关使用JavaScript进行正则表达式匹配的帮助


仅匹配数字:

  • 如果(奇数)的数大于25,则行 在(偶数)之后有一个单词“苹果”。
    • 说明
      • 第一行的值(29)属于第二行(“第一|可可苹果是”)
      • 第三行的值(23)到第四行(“第二测试文本”)。。。等等

我将与之一起使用的文本:

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
试试这个:

/(2[5-9]|[3-9][0-9])%(?=.*\n.*Apples)/g
试试这个:

/(2[5-9]|[3-9][0-9])%(?=.*\n.*Apples)/g

对于正则表达式不太确定,但我认为以下内容在查找数字和行方面做得非常好:

var str=`29%正常
首先,可可苹果是
23%不是
第二篇|测试文本
18%不是
第三|芒果阿尔帕探戈
16%不是
第四,苹果是绿色的
33%可以
第五|文本测试应用程序
10%不是
第六,苹果是金鸭子
28%可以
第七,阿尔帕苹果是探戈
66%可以
第八|哦,我的苹果是鳄梨
20%不是
第九,这是我的课文
25%不是
第十|这很难`;
var=false;
str.split(“\n”).forEach(函数(行,i){
如果(i%2==0&&parseInt(行替换(/\\D/g,“”),10)>=25){
更大=正确;
}否则{
如果(更大){
更大=错误;
if(第行索引(“苹果”)>-1){
控制台日志(“行内匹配”+i);
}
}
}

});不确定正则表达式,但我认为下面的代码在查找数字和行方面做得非常好:

var str=`29%正常
首先,可可苹果是
23%不是
第二篇|测试文本
18%不是
第三|芒果阿尔帕探戈
16%不是
第四,苹果是绿色的
33%可以
第五|文本测试应用程序
10%不是
第六,苹果是金鸭子
28%可以
第七,阿尔帕苹果是探戈
66%可以
第八|哦,我的苹果是鳄梨
20%不是
第九,这是我的课文
25%不是
第十|这很难`;
var=false;
str.split(“\n”).forEach(函数(行,i){
如果(i%2==0&&parseInt(行替换(/\\D/g,“”),10)>=25){
更大=正确;
}否则{
如果(更大){
更大=错误;
if(第行索引(“苹果”)>-1){
控制台日志(“行内匹配”+i);
}
}
}

});在这里,它应该按照您的要求工作

^(?:(?:.*\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”
的行

看,

注意,由于javascript中lookbehind的一些限制,捕获百分比的数量比只匹配它要方便得多

更直接的方法

(?:2[6-9]|[3-9][0-9]|100)(?=.*\n.*Apples)
我认为这种方法比第一种更简单,因为你不需要处理像“奇”或“偶”这样的花哨词汇


请参见这里的,它应该可以按照您的要求工作

^(?:(?:.*\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”
的行

看,

注意,由于javascript中lookbehind的一些限制,捕获百分比的数量比只匹配它要方便得多

更直接的方法

(?:2[6-9]|[3-9][0-9]|100)(?=.*\n.*Apples)
我认为这种方法比第一种更简单,因为你不需要处理像“奇”或“偶”这样的花哨词汇

请参阅,使用

(2[5-9]|[3-9][0-9]|100)%.*\n.*Apples.*
如果需要捕获所有文本。

请使用

(2[5-9]|[3-9][0-9]|100)%.*\n.*Apples.*

如果您需要捕获所有文本。

我怀疑任何正则表达式都不能比较这样的数字。您希望得到什么匹配?只有号码?第一句还是第二句?或者两者都有?@Stefan有可能,我现在了解你的情况,但你想匹配什么?我是说绳子的哪一部分。嗯,你证明我错了^^没有那样想我怀疑任何正则表达式的味道都能比较那样的数字..你想得到什么匹配?只有号码?第一句还是第二句?或者两者都有?@Stefan有可能,我现在了解你的情况,但你想匹配什么?我是说绳子的哪一部分。嗯,你证明我错了^^我没有那样想谢谢!我会试试的。谢谢!我会尝试一下。这不是我想要的“完全”,因为它匹配,如果我的任何一个条件是真的(I.25<数字II.有“苹果”在里面。有人已经在顶部完美地回答了它,但是谢谢你的帮助!已经回答了,但是谢谢!如果它不仅必须匹配一个词(“苹果”),你会如何更改你的代码,但整行?(“首先,可可苹果是”)我尝试过改变它,但因为|符号,我无法让它工作。请使用这个。
(?:2[6-9]|[3-9][0-9]| 100)(?=.\n.*苹果)
\n
是一个新行,对吗?
*
是苹果之前的任何字符。
所以,你应该写这个
(?:2[6-9][3-9][1249]|100)(?=.\n第一个\可可苹果是)
如果在最后一个组中使用非捕获组而不是正向前瞻
(?:2[6-9]|[3-9][0-9]| 100)(?:.\n第一个\可可苹果是)
您将在regex101中看到它将按照您的意愿进行匹配。但请注意
。基本上它是一个“更改操作符”。请使用
\\\\
匹配字符
\
。我可能建议您从internet下载regex备忘单。它非常有用。这不是我想要的“完全”,因为如果我的任何一个条件都是真的(I.25