如何在JavaScript中匹配多行字符串的开头/结尾?

时间:2018-09-06 21:42:53

标签: javascript regex

它应该非常简单,但是我不知道如何匹配多行字符串的开头和结尾。说,我想知道字符串是否在第一行的开头包含foo

str = "foo\nbar";
reg = /^foo/m;
console.log( reg.test( str ) ); // → true

但是如果我交换foobar,从而将foo放在第二行,结果(尽管不应该)是相同的:

str = "bar\nfoo";
reg = /^foo/m;
console.log( reg.test( str ) ); // → true

那么,有没有办法捕获多行字符串的开始和结束?

2 个答案:

答案 0 :(得分:4)

您正在使用多行模式标志“ m”。 使用该标志,您不仅可以在文本的开头进行匹配,而且可以在行的开头进行匹配。因此,当您在foo之前有换行符\ n时,这是新行的开始,它将与开始查询^ foo匹配。

这里是带有更多信息的链接: https://javascript.info/regexp-multiline-mode

解决方案:,正如Jacob在下面的评论部分中所述,如果只希望匹配字符串的开头,只需采用多行模式,

str = "bar\nfoo";
reg = /^foo/;
console.log( reg.test( str ) ); // → false

答案 1 :(得分:0)

在这种情况下,您可能根本不需要使用复杂的正则表达式。如果始终确定要检查字符串的非常开头是否为“ foo”,请检查str.slice(0,3) === "foo"