在JavaScript中使用多行正则表达式模式是否无法指示输入字符串的开始?

在JavaScript中使用多行正则表达式模式是否无法指示输入字符串的开始?,javascript,regex,multiline,Javascript,Regex,Multiline,在JavaScript中,更改^和$的含义: 将开头和结尾字符(^和$)视为在多行上工作(即,匹配每行的开头或结尾(由\n或\r分隔),而不仅仅是整个输入字符串的开头或结尾) 那么,如果这些字符不在图片中,有没有其他方法来标记输入字符串的开头?我如何表明我希望我的多行模式只在输入字符串的开头匹配 我知道我可以使用exec返回值的index属性来检查匹配的索引,但是有没有办法防止正则表达式引擎首先搜索整个字符串?没有,^是唯一测试输入开始的方法,正如您所说,其行为由多行标志修改 您可以在正在测试的

在JavaScript中,更改
^
$
的含义:

将开头和结尾字符(^和$)视为在多行上工作(即,匹配每行的开头或结尾(由\n或\r分隔),而不仅仅是整个输入字符串的开头或结尾)

那么,如果这些字符不在图片中,有没有其他方法来标记输入字符串的开头?我如何表明我希望我的多行模式只在输入字符串的开头匹配


我知道我可以使用
exec
返回值的
index
属性来检查匹配的索引,但是有没有办法防止正则表达式引擎首先搜索整个字符串?

没有,
^
是唯一测试输入开始的方法,正如您所说,其行为由
多行
标志修改


您可以在正在测试的字符串的开头和正则表达式的开头放置一些唯一的字符串,但这有点像黑客。在正常情况下,正如您所说,您应该测试返回匹配的索引。

不,JavaScript不支持绝对锚(
\A
\Z
\Z
)像大多数其他风格一样。但是你确定你需要它们吗?字符串的开头通常是必须使用锚的唯一位置。随后的每一行都由其前面的新行自动“锚定”


我建议您删除多行标志,并确保显式使用所有换行符。我知道这有点模糊;如果您提供代码示例和/或告诉我们您试图解决的问题,我们可能会做得更好。

我正在使用我的模式捕获重复行,因此我需要使用行边界来说明重复行与输入字符串的“边”相对的时间(我不能简单地将换行符设置为可选的,因为它们只有在与边缘相对时才是可选的)。对于我的解决方案,我将测试匹配的索引,正如我在问题中提到的。我将给你
+1
,因为你的建议可能对其他人有用。更新:事实上,由于性能问题,我破解了一个解决方案,解决了我上面描述的问题。我将在代码上线后发布一个链接。我很高兴你拿到支票了!