Javascript 正则表达式问题,与具有两列的条目不匹配

Javascript 正则表达式问题,与具有两列的条目不匹配,javascript,regex,Javascript,Regex,我有以下正则表达式: var match = str.match(/^[^,]*,[^,]*,.*$/mg); 覆盖多行条目,如 1234,john smith, john 4321, john smith2, jack, william@ab.com 8765, daniel, smith, rocks 在下面的演示链接中,当您粘贴我的示例的整个块(全部三行)时,您可以看到三个单独的警报,每次警报一行 然而,不知何故,当我尝试使用相同的正则表达式来处理带有两个列的条目时,例如 3214,

我有以下正则表达式:

var match = str.match(/^[^,]*,[^,]*,.*$/mg);
覆盖多行条目,如

1234,john smith, john
4321, john smith2, jack, william@ab.com
8765, daniel, smith, rocks
在下面的演示链接中,当您粘贴我的示例的整个块(全部三行)时,您可以看到三个单独的警报,每次警报一行

然而,不知何故,当我尝试使用相同的正则表达式来处理带有两个列的条目时,例如

3214, john
4321, jack
正则表达式与它不匹配,我在一个警报中得到整个块


知道为什么吗

如果在第二列后面加逗号,它会起作用,因为正则表达式匹配2个逗号

如果放置第二个逗号,则可以修复regexi

/^[^,]*,[^,]*,?.*$/mg

如果你不想选择完整的文本,不要使用<代码> M< /Cord>选项,因为它将在多行中匹配,在你的情况下,它与3列中的第二个Cube在中间有<代码> \n>代码>匹配。如果你在第二列中放置逗号,它会起作用,因为你的正则表达式匹配2逗号。 如果放置第二个逗号,则可以修复regexi

/^[^,]*,[^,]*,?.*$/mg

如果你不想选择完整的文本,不要使用<代码> M< /Cord>选项,因为它将在多行中匹配,在你的情况下,它与3个列匹配,其中第二个Cube在中间有<代码> \n>代码> P> >让我们分析一下你的正则表达式是什么意思:

/^[^,]*,[^,]*,.*$/mg
/^从一开始就匹配
[^,]*除逗号以外的任何字符,出现次数为0或更多
,一个逗号
[^,]*除逗号以外的任何字符,出现次数为0或更多
,一个逗号
.*任何字符或符号,出现0次或更多
$匹配行的末尾
/m多行
g全球
我不确定您是否真的需要
mg
标志,但除此之外,您的问题是您的正则表达式需要两个逗号。基本上你可以把它浓缩成:

/^[^,]*,.*$/mg

这将匹配至少包含一个逗号的行。

让我们分析一下正则表达式的含义:

/^[^,]*,[^,]*,.*$/mg
/^从一开始就匹配
[^,]*除逗号以外的任何字符,出现次数为0或更多
,一个逗号
[^,]*除逗号以外的任何字符,出现次数为0或更多
,一个逗号
.*任何字符或符号,出现0次或更多
$匹配行的末尾
/m多行
g全球
我不确定您是否真的需要
mg
标志,但除此之外,您的问题是您的正则表达式需要两个逗号。基本上你可以把它浓缩成:

/^[^,]*,.*$/mg

这将匹配至少包含一个逗号的行。

第二个示例中的正则表达式与2列匹配您是否使用
.split()
替代?第二个示例中的正则表达式与2列匹配您是否使用
.split()
替代?在我的演示中使用您的正则表达式,我仍然在一个警报中得到第二个块示例在我的演示中使用你的正则表达式,我仍然在一个警报中得到第二个块示例在我的示例中使用你的正则表达式不会在单独的警报中给我单独的行,你可以看到当你粘贴我提供的第一个示例块时,你会看到三个单独的警报,每个警报都包含单独的lineAh,因此,也许您确实需要
mg
标志。在我的示例中使用正则表达式不会在单独的警报中为我提供单独的行,您可以看到当您粘贴第一个示例块时,我提供了三个单独的警报,每个警报都包含单独的lineAh,因此可能您确实需要
mg
标志。