Javascript 无法分解这个正则表达式:^[^\d]*?(\d+;)[^\d]*?(\d+;)?[^\d]*?$到底在做什么

Javascript 无法分解这个正则表达式:^[^\d]*?(\d+;)[^\d]*?(\d+;)?[^\d]*?$到底在做什么,javascript,regex,Javascript,Regex,regexp是 ^[^\d]*?(\d+)[^\d]*?(\d+)?[^\d]*?$ 我理解得对吗?此表达式开头和结尾处的^和$设置表达式的起点和终点(这意味着它应该是完全匹配的?)。然后在里面,它需要2个非数字序列,后面跟任意数量的数字,然后以任意非数字字符结尾 例如:“我妈妈有6只猫和1只狗。” 另外,有人能解释一下在这个表达式中使用捕获组()与列表[]的目的吗 如果我回答自己的问题,我很抱歉,我只是想确保我理解这一点 这个正则表达式唯一关心的是字符串的开头和/或结尾有一组数字 ^[^\d

regexp是

^[^\d]*?(\d+)[^\d]*?(\d+)?[^\d]*?$
我理解得对吗?此表达式开头和结尾处的
^
$
设置表达式的起点和终点(这意味着它应该是完全匹配的?)。然后在里面,它需要2个非数字序列,后面跟任意数量的数字,然后以任意非数字字符结尾

例如:“我妈妈有6只猫和1只狗。”

另外,有人能解释一下在这个表达式中使用捕获组
()
与列表
[]
的目的吗


如果我回答自己的问题,我很抱歉,我只是想确保我理解这一点

这个正则表达式唯一关心的是字符串的开头和/或结尾有一组数字

^[^\d]*?(\d+)[^\d]*?(\d+)?[^\d]*?$

在这组数字之前,可能有一系列非数字

^[^\d]*?(\d+)[^\d]*?(\d+)[^\d]*$

在最初的一组数字之后,还可能有一系列非数字

^[^\d]*?(\d+[^\d]*?(\d+)[^\d]*?$

和/或一组数字

^[^\d]*?(\d+)[^\d]*?(\d+)[^\d]*?$

和/或一组非数字

^[^\d]*?(\d+)[^\d]*?(\d+)[^\d]*?$


如果非数字字符组在前面,则包括在内。如果不是,则仅为初始数字组。如果有以下可选部件,则包括它们。如果没有,则以初始数字组为结尾。

您的正则表达式和示例数据-此处提供了正则表达式的完整解释。首先,将
[^\d]
简化为
\d
,只是为了更容易读取,正则表达式本身的功能不需要捕获组,但也许它们被用于评估比赛结果。取决于使用此正则表达式的代码。您的正则表达式将在第一个和第二个捕获组中提取
6
1
。您对正则表达式的理解是正确的。感谢您给出明确的答案。这正是我要找的@万能的当然会!