Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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_Jquery_Regex_Split - Fatal编程技术网

Javascript 基于多个分隔符计算项目?

Javascript 基于多个分隔符计算项目?,javascript,jquery,regex,split,Javascript,Jquery,Regex,Split,我需要计算用户输入的电子邮件地址数。这些地址可由以下任何一项分隔: 逗号后跟无空格-a@example.com,c@example.com.com 逗号后跟任意数量的空格(例如,某人可能有一个逗号后跟3个空格或仅1个)-a@example.com, c@example.com.com 仅限空白-a@example.com c@example.com.com 新线 有什么好方法可以清理这些数据并可靠地计算地址 我假设普通的ole javascript可以处理这个问题,但为了它的价值,我使用j

我需要计算用户输入的电子邮件地址数。这些地址可由以下任何一项分隔:

  • 逗号后跟无空格-
    a@example.com,c@example.com.com
  • 逗号后跟任意数量的空格(例如,某人可能有一个逗号后跟3个空格或仅1个)-
    a@example.com, c@example.com.com
  • 仅限空白-
    a@example.com  c@example.com.com
  • 新线
有什么好方法可以清理这些数据并可靠地计算地址


我假设普通的ole javascript可以处理这个问题,但为了它的价值,我使用jQuery。

最简单的方法就是用空格替换所有逗号,然后根据空格分割字符串。不需要条件


举个例子。

最简单的方法就是用空格替换所有逗号,然后根据空格分割字符串。不需要条件

var str="YOUR_STR",
    arr = [];
if( str.indexOf(',') >= 0 ) {
   // if comma found then replace all extra space and split with comma
   arr =  str.replace(/\s/g,'').split(',');
} else {
   // if comma not found
   arr = str.split(' ');
}
一把小提琴在那上面举了个例子

var str="YOUR_STR",
    arr = [];
if( str.indexOf(',') >= 0 ) {
   // if comma found then replace all extra space and split with comma
   arr =  str.replace(/\s/g,'').split(',');
} else {
   // if comma not found
   arr = str.split(' ');
}

正则表达式使这相当容易

如果更改了多个空格,则可以稍微更改正则表达式

var r = l.split(/ +|, +|,/);
正则表达式使这相当容易

如果更改了多个空格,则可以稍微更改正则表达式

var r = l.split(/ +|, +|,/);

这不是字符串包含的电子邮件地址数。。。这就是字符串包含的
空格|逗号
。您还可以计算
@
的数量。这也不正确。这不是字符串包含的电子邮件地址数。。。这就是字符串包含的
空格|逗号
。您还可以计算
@
的数量。这也不正确。+1对于贪婪模式,在所有空格上拆分将导致空数组元素,因此电子邮件地址计数错误当然,这是我的答案。我刚刚添加了对贪婪匹配信息的解释(如果OP需要它,以及为什么他不应该选择
/[\s,]/
,更不用说
/[124;,/
,因为开头和结尾的空格都算电子邮件,在拆分之前添加这个来修剪字符串:
输入。替换(/^\s+$/g),”)。拆分(/[\s,]+/);
+1对于贪婪模式,在所有空格上拆分将导致空数组元素,因此电子邮件地址计数错误当然,这是我的答案。我刚刚添加了贪婪匹配信息的解释(以防OP需要它,以及为什么他不应该选择
/[\s,]/
,更不用说
/|、|、/
,因为开头和结尾的空格都算是电子邮件,请在拆分之前添加此项以修剪字符串:
input.replace(/^\s++$/g,”)。拆分(/[\s,]+/);