Regex 仅当有3行时捕获文本的正则表达式

Regex 仅当有3行时捕获文本的正则表达式,regex,Regex,我有一个regex1: (\w+)\n#(\w+)_(\w+)\n(\w+) 它捕获以下文本1: randomtext #randomteeexxt_randomqlsdfjml randomagain 但有时我在文本2中有第四行: randomtext #randomteeexxt_randomqlsdfjml randomagain stillrandom 所以下面的regex2可以工作: (\w+)\n#(\w+)_(\w+)\n(\w+)\n(\w+) regex2与text1中

我有一个regex1:

(\w+)\n#(\w+)_(\w+)\n(\w+)
它捕获以下文本1:

randomtext
#randomteeexxt_randomqlsdfjml
randomagain
但有时我在文本2中有第四行:

randomtext
#randomteeexxt_randomqlsdfjml
randomagain
stillrandom
所以下面的regex2可以工作:

(\w+)\n#(\w+)_(\w+)\n(\w+)\n(\w+)
regex2与text1中的任何内容都不匹配,这就是我想要的

regex1与text2的前3行匹配,但我不想要它


我希望regex1与text2中的任何内容都不匹配。

您可以尝试在当前模式周围放置锚,以确保它适用于整个输入:

^(\w+)\n#(\w+)_(\w+)\n(\w+)$
下面是如何在JavaScript中使用此模式的示例:

var stru_pass='AAA\n\BBB\u CCC\nDDD';
var str_fail='AAA\n#BBB\u CCC\nDDD\nEEE';
console.log(/^\w+\n\w+\w+\n\w+$/.test(str\u pass));

console.log(/^\w+\n#\w+\w+\n\w+$/.test(str\u fail))您可以尝试在当前模式周围放置锚点,以确保其适用于整个输入:

^(\w+)\n#(\w+)_(\w+)\n(\w+)$
下面是如何在JavaScript中使用此模式的示例:

var stru_pass='AAA\n\BBB\u CCC\nDDD';
var str_fail='AAA\n#BBB\u CCC\nDDD\nEEE';
console.log(/^\w+\n\w+\w+\n\w+$/.test(str\u pass));

console.log(/^\w+\n#\w+\w+\n\w+$/.test(str\u fail))谢谢你的回答。它不起作用。它仍然捕获了前3行。我正在用它来测试。@GF
它不工作
。。。这完全取决于你对这个词的定义。它在演示站点中不起作用,因为该regex工具被设计为尽可能多地应用。然而,在大多数编程语言中,我添加的锚将确保整个输入与模式匹配。那个么,你们实际使用的是什么工具/语言呢?很抱歉回答得太长了,我必须和我的开发人员仔细检查一下。我们使用的是JavaScript,Node JS。您需要更多信息吗?包括您当前的JS代码,并说明为什么我的模式不能使用它。@GF检查我的更新答案,它现在包括一个JavaScript代码示例。您应该使用
test()
检查输入字符串是否与正则表达式模式匹配。谢谢您的回答。它不起作用。它仍然捕获了前3行。我正在用它来测试。@GF
它不工作
。。。这完全取决于你对这个词的定义。它在演示站点中不起作用,因为该regex工具被设计为尽可能多地应用。然而,在大多数编程语言中,我添加的锚将确保整个输入与模式匹配。那个么,你们实际使用的是什么工具/语言呢?很抱歉回答得太长了,我必须和我的开发人员仔细检查一下。我们使用的是JavaScript,Node JS。您需要更多信息吗?包括您当前的JS代码,并说明为什么我的模式不能使用它。@GF检查我的更新答案,它现在包括一个JavaScript代码示例。您应该使用
test()
检查输入字符串是否与正则表达式模式匹配。