2015-06-20 33 views
-3

如何写下面如何写正则表达式这个JavaScript字符串

"(22.0796251, 82.13914120000004),36", "(22.744108, 77.73696700000005),48",...and so on 

像这个字符串:

(22.0796251, 82.13914120000004) 36 

    (22.744108, 77.73696700000005)  48 
    ...and so on..................  .. 

如何做到这一点使用正则表达式中javscript?

我的尝试是这样的:

substring = test.split(','); 

其中测试包含的数据进行格式化。但是它的错误

回答

2

您应该使用split在正则表达式上拆分的能力,然后将它们保留在结果中。要做到这一点,只需在正则表达式中放置一个捕获组。在你的情况,你会的东西在双引号“分裂”:

pieces = test.split(/(".*?")/) 
        ^^^^^^^ CAPTURE GROUP 

// ["", ""(22.0796251, 82.13914120000004),36"", ", ", ""(22.744108, 77.73696700000005),48"", ""] 

问号是,以确保它不会通过输入最后一个引号吃光了所有的字符,直到。它使*量词“非贪婪”。

现在摆脱垃圾(空字符串和", ")的:

pieces = pieces . filter (function(seg) { return !/^[, ]*$/.test(seg); }) 

// ["(22.0796251, 82.13914120000004),36", "(22.744108, 77.73696700000005),48"] 

接下来,你可以打破每一块与另一个正则表达式,如

arrays = pieces . map(function(piece) { return piece.match(/(.*), (.*)/).slice(1); }); 

// [["(22.0796251, 82.13914120000004)", "36"], ["(22.744108, 87.73696700000005)", "48"]] 

slice是摆脱数组的第一个元素返回match,这是整个匹配,我们不需要这个。

现在打印出arrays,进一步拆分其元素,或做任何你想要的东西。

相关问题