This question already has answers here:
What do ^ and $ mean in a regular expression?
                                
                                    (2个答案)
                                
                        
                                去年关闭。
            
                    
它应该很简单,但是我不知道如何匹配多行字符串的开头和结尾。说,我想知道字符串是否在第一行的开头包含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





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

最佳答案

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

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

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



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

关于javascript - 如何在JavaScript中匹配多行字符串的开头/结尾? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52212513/

10-12 13:11