Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式-如何检查逗号分隔的值是否超过三个_Javascript_Regex - Fatal编程技术网

JavaScript正则表达式-如何检查逗号分隔的值是否超过三个

JavaScript正则表达式-如何检查逗号分隔的值是否超过三个,javascript,regex,Javascript,Regex,我不擅长JavaScript正则表达式,因此需要帮助检查字符串以进行验证 我得到的这些图像名称用逗号分隔:justry.jpg、Desert.png、绣球花.gif、水母.jpg、 现在我想检查一下这个正则表达式: 什么是有效的: Chrysanthemum.jpg,Desert.png,Hydrangeas.gif,Jellyfish.jpg,Koala.jpg,Lighthouse.png, 无效的内容: 1. Chrysanthemum.jpg,Desert.png,Hydrangeas

我不擅长JavaScript正则表达式,因此需要帮助检查字符串以进行验证

我得到的这些图像名称用逗号分隔:
justry.jpg、Desert.png、绣球花.gif、水母.jpg、

现在我想检查一下这个正则表达式:

什么是有效的:

Chrysanthemum.jpg,Desert.png,Hydrangeas.gif,Jellyfish.jpg,Koala.jpg,Lighthouse.png,
无效的内容:

1. Chrysanthemum.jpg,Desert.png,Hydrangeas.gif,
2. Chrysanthemum.jpg,Desert.png,
3. Chrysanthemum.jpg,
只有当逗号分隔值的数量超过3时,验证才会成功。

选项1:先计算逗号,然后计算文本 以下是一个简单的方法:

if (/(?:,\s*\S+){3}/.test(yourString)) {
    // It matches!
} else {
    // Nah, no match...
}
这将检查是否至少有三个逗号后跟可选空格,然后是非空格字符

中,您可以看到这是如何工作的(存在匹配项)


选项2:检查您是否至少有四张图像 此选项检查您是否至少有四个图像

if (/^\w+\.(?:jpg|png|gif)(?:, \w+\.(?:jpg|png|gif)){3}/.test(yourString)) {
    // It matches!
} else {
    // Nah, no match...
}

查看

中的匹配项下面的正则表达式将验证文件扩展名,逗号后面的空格(最后一个除外)以及逗号分隔的值大于3

^[A-Z][a-z]+\.(?:jpg|png|gif),(?: [A-Z][a-z]+\.(?:jpg|png|gif),){3,}$

如果这些值不是用逗号和空格分隔的,那么您的正则表达式

^[A-Z][a-z]+\.(?:jpg|png|gif),(?:[A-Z][a-z]+\.(?:jpg|png|gif),){3,}$

一个简单得多的

^(?:[A-Z][a-z]+\.(?:jpg|png|gif),){4,}$

你确定需要正则表达式吗?试试这个:

var str = "Chrysanthemum.jpg, Desert.png, Hydrangeas.gif, Jellyfish.jpg,";
var length = str.split(',').filter(function(item) { return item != ""; }).length;
if (length > 3) {
  ...
}

是否仍要分隔并使用每个图像名称?是否需要检查逗号分隔列表中的值(图像名称),还是只需要知道它们的数量?为什么不使用split()?作为奖励-空元素检查-.Hi regex正在工作,但在我的字符串中,图像名称之间没有空格,如
Salvis.jpg,Sumeet.jpg,Jacob.png,Srlawr.png,
,因此没有空格它就不能工作。这是有效的:
Salvis.jpg,Sumeet.jpg,Jacob.png,Srlawr.png,
,这对空格无效:
Salvis.jpg,Sumeet.jpg,Jacob.png,Srlawr.png,
好的,现在你能解释一下,如果将来我必须检查逗号分隔的值超过5,那么要更改什么?将最后一个
{4,}
更改为
{5,}
。只需在regex101网站上玩我的regex
{5,}
表示从一开始它必须有5个文件名。感谢您的支持:)