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

如何在JavaScript中匹配多行字符串的开始/结束?,javascript,regex,Javascript,Regex,它应该非常简单,但我不知道如何匹配多行字符串的开头和结尾。比如,我想知道字符串是否在第一行开头包含foo str=“foo\nbar”; reg=/^foo/m; console.log(注册测试(str));//→ true在这种特定情况下,您可能根本不需要使用复杂的正则表达式。如果您始终确定要检查字符串的最开头是否为“foo”,那么请检查str.slice(0,3)==“foo”在这种特定情况下,您可能根本不需要使用复杂的正则表达式。如果您始终确定要检查字符串的最开头是否为“foo”,那么

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

str=“foo\nbar”;
reg=/^foo/m;

console.log(注册测试(str));//→ true
在这种特定情况下,您可能根本不需要使用复杂的正则表达式。如果您始终确定要检查字符串的最开头是否为“foo”,那么请检查
str.slice(0,3)==“foo”

在这种特定情况下,您可能根本不需要使用复杂的正则表达式。如果您始终确定要检查字符串的最开头是否为“foo”,那么请检查您是否正在使用多行模式标志“m”。 使用该标志,您不仅在文本的开头匹配,而且在行的开头匹配。因此,如果在foo之前有换行符,\n则这是新行的开始,它将匹配开始查询^foo

以下是一个链接,其中包含一些详细信息:

解决方案:正如Jacob在下面的评论部分所说,如果您只想匹配字符串的开头,只需取消多行模式

str=“bar\nfoo”;
reg=/^foo/;

console.log(注册测试(str));//→ false
您正在使用多行模式标志“m”。 使用该标志,您不仅在文本的开头匹配,而且在行的开头匹配。因此,如果在foo之前有换行符,\n则这是新行的开始,它将匹配开始查询^foo

以下是一个链接,其中包含一些详细信息:

解决方案:正如Jacob在下面的评论部分所说,如果您只想匹配字符串的开头,只需取消多行模式

str=“bar\nfoo”;
reg=/^foo/;

console.log(注册测试(str));//→ false
谢谢!是的,但是我正在寻找一个更通用的解决方案。谢谢!是的,但我正在寻找一个更通用的解决方案。试试看。我觉得根本不需要
m
标志。只要删除它,
^
$
就能正常工作。@AmsaIK我理解它为什么匹配。但是我的问题的解决方案是什么呢?所以,去掉多行标志是唯一的解决方案。很不方便。。。无论如何,谢谢!这不是唯一的解决办法。根据您的环境,您可以使用负数
reg=/(?)。@如果我没有弄错的话,无法忍受亮度(现在无法检查),在chrome之外还不支持lookbehind。我觉得根本不需要
m
标志。只要删除它,
^
$
就可以正常工作。@AmsaIK我知道它为什么匹配。但是我的问题的解决方案是什么?所以,去掉多行标志是唯一的解决方案。非常不方便nyway,谢谢!这不是唯一的解决方案。根据您的环境,您可以使用负数
reg=/(?。@无法忍受亮度如果我没有弄错(现在无法检查),chrome之外还不支持Lookback。