Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 - Fatal编程技术网

Javascript 正则表达式匹配特定关键字

Javascript 正则表达式匹配特定关键字,javascript,regex,Javascript,Regex,我试图使用regexp来匹配一些特定的关键字 对于下面的代码,我只想匹配第一行和第二行的IFs,它们没有前缀和后缀。我现在使用的regexp是\bIF | ELSE\b,它将返回所有的if IF A > B THEN STOP IF B < C THEN STOP LOL.IF IF.LOL IF.ELSE 提前谢谢你的帮助。 我正在用它做测试。 需要使用JS。我猜这就是您想要的,假设您已经为多行添加了m标志: (?:^|\s)(IF|ELSE)(?:$|\s) 它由三个组

我试图使用regexp来匹配一些特定的关键字

对于下面的代码,我只想匹配第一行和第二行的IFs,它们没有前缀和后缀。我现在使用的regexp是\bIF | ELSE\b,它将返回所有的if

IF A > B THEN STOP
   IF B < C THEN STOP
LOL.IF
IF.LOL
IF.ELSE
提前谢谢你的帮助。 我正在用它做测试。
需要使用JS。

我猜这就是您想要的,假设您已经为多行添加了m标志:

(?:^|\s)(IF|ELSE)(?:$|\s)
它由三个组组成:

?:^ |\s-匹配行首或单个空格字符 如果| ELSE-匹配您的关键字之一 ?:$|\s-匹配行尾或单个空格字符。
我猜这就是您想要的,假设您已经为multiline添加了m标志:

(?:^|\s)(IF|ELSE)(?:$|\s)
它由三个组组成:

?:^ |\s-匹配行首或单个空格字符 如果| ELSE-匹配您的关键字之一 ?:$|\s-匹配行尾或单个空格字符。
你可以用lookaround-lookahead+lookback来做。这是您真正想要的,因为它明确匹配您正在搜索的内容。您不希望在匹配项周围检查其他字符,如字符串开头或空格,但如果没有被点包围,则完全匹配

/(?<!\.)(IF|ELSE)(?!\.)/g
说明:

使用g标志查找所有引用 ? 是一个与Y相匹配而不在X之前的负向查找 YX是一个负前瞻,它匹配Y而不是后跟X 工作示例:


PS:如果你不必为JS编写正则表达式,最好使用一个支持posix标准的工具,比如regex101.com,你可以通过lookaround lookahead+lookback来完成。这是您真正想要的,因为它明确匹配您正在搜索的内容。您不希望在匹配项周围检查其他字符,如字符串开头或空格,但如果没有被点包围,则完全匹配

/(?<!\.)(IF|ELSE)(?!\.)/g
说明:

使用g标志查找所有引用 ? 是一个与Y相匹配而不在X之前的负向查找 YX是一个负前瞻,它匹配Y而不是后跟X 工作示例:



PS:如果您不必为JS编写正则表达式,那么最好使用支持posix标准的工具,如regex101.com

if是否总是出现在行首?例如,是否要在测试IF某物时匹配IF?\b如果| ELSE\b在末尾添加空格?@nickb否,位置是随机的:IF是否总是出现在行首?例如,是否要在测试IF某物时匹配IF?\b如果| ELSE\b在末尾添加空格?@nickb否,位置是随机的:谢谢我已经测试过了。它起作用了。对于第二行,它将在开始时计算这些空白。这是可行的,但我认为更好的做法是使用我的答案中描述的lookaround,因为它更有用explcit@AndreasLinden我已经测试了你的答案,但它不起作用。nickb我刚刚意识到在第四行,它将匹配字符串后面的所有空格,这不是我想要的@你用的正则表达式是什么语言?JS?你指的是哪一行?谢谢!我已经测试过了。它起作用了。对于第二行,它将在开始时计算这些空白。这是可行的,但我认为更好的做法是使用我的答案中描述的lookaround,因为它更有用explcit@AndreasLinden我已经测试了你的答案,但它不起作用。nickb我刚刚意识到在第四行,它将匹配字符串后面的所有空格,这不是我想要的@你用的正则表达式是什么语言?JS?你指的是哪一行?你测试过这个吗?负面回顾以?开头,而不是。此外,OP正在使用JS的regex引擎的regexr上进行测试,至少根据regexr.oops这是一个打字错误,它不支持负面的lookbehind。非常感谢。更新后的链接。这是posix标准,没有限制使其与JSKB一起工作。同意nickb。/?@安德烈亚斯·林登:你的回答很有帮助,而且很正确。但是我需要和JS一起工作。再次感谢。你测试过这个吗?负面回顾以?开头,而不是。此外,OP正在使用JS的regex引擎的regexr上进行测试,至少根据regexr.oops这是一个打字错误,它不支持负面的lookbehind。非常感谢。更新后的链接。这是posix标准,没有限制使其与JSKB一起工作。同意nickb。/?@安德烈亚斯·林登:你的回答很有帮助,而且很正确。但是我需要和JS一起工作。再次感谢。