2017-06-06 107 views
2

我试图通过三个或更多英镑符号或三个或更多空格拆分字符串。为什么不是这个javascript正则表达式分割函数工作?

我使用的功能,看起来像这样:

 var produktDaten = dataMatch[0].replace(/\x03/g, '').trim().split('/[#\s]/{3,}'); 
    console.log(produktDaten + ' is the data'); 

我需要清理的数据了一下,因此replacetrim

输出我得到这个样子的:

##########################################################################MA-KF6###Beckhoff###EL1808 BECK.EL1808###MA-KF7###Beckhoff###EL1808 BECK.EL1808###MA-KF12###Beckhoff###EL1808 BECK.EL1808###MA-KF13###Beckhoff###EL1808 BECK.EL1808###MA-KF14###Beckhoff###EL1808 BECK.EL1808###MA-KF15###Beckhoff###EL1808 BECK.EL1808###MA-KF16###Beckhoff###EL1808 BECK.EL1808###MA-KF19###Beckhoff###EL1808 BECK.EL1808 is the data 

这怎么可能?不管输入如何,不应将英镑和多个空格删除?

+6

不,因为你没有传递正则表达式。它应该是'.split(/ [#\ s] {3,} /)'。你在寻找[这个输出](https://jsfiddle.net/3swu2xv8/)? –

+0

“三个或三个以上的磅符号或三个或更多的空间”,那么你的正则表达式应该是'/#{3,} | \ s {3,} /'。你当前的正则表达式还会将这个“## ## two” - > ['one','two']'分开 – Thomas

回答

4

您将一个字符串传递给split,输入字符串不包含该字符串。我想你想使用

/[#\s]{3,}/ 

喜欢这里:

var produktDaten = "##########################################################################MA-KF6###Beckhoff###EL1808 BECK.EL1808###MA-KF7###Beckhoff###EL1808 BECK.EL1808###MA-KF12###Beckhoff###EL1808 BECK.EL1808###MA-KF13###Beckhoff###EL1808 BECK.EL1808###MA-KF14###Beckhoff###EL1808 BECK.EL1808###MA-KF15###Beckhoff###EL1808 BECK.EL1808###MA-KF16###Beckhoff###EL1808 BECK.EL1808###MA-KF19###Beckhoff###EL1808 BECK.EL1808"; 
 
console.log(produktDaten.replace(/\x03/g, '').trim().split(/[#\s]{3,}/));

/[#\s]{3,}/正则表达式的3个或更多字符是要么#或空格匹配。

注意:仅仅删除'不会解决问题,因为您使用的是未转义的/并对其进行了量化。你实际上需要量化字符类,[#\s]

相关问题