溢出的带有点的字符串但是点不在于使用jquery或regex的单引号

时间:2016-05-02 11:46:54

标签: javascript jquery regex

我需要在点上分割这样的字符串。但我不想在字符串内部分割('或")。我没有解析文件;只是一个没有换行符的简单字符串。

part 1;"12:'xyz@gmail.com'.8:'23'.25:'hello'.6:6"

结果应该是:

part 1 "12:'xyz@gmail.com'"
part 2 "8:'23'"
part 3 "25:'hello'"
part 4 "6:6"

我认为这可以用正则表达式完成,但如果没有;我对其他方法持开放态度。

修改

我有

str = "12:'xyz@gmail.com'.8:'23'.25:'hello'.6:6"

我希望得到

str[0]=12:xyz@gmail.com str[1]=8:'23' 
str[2]=25:'hello' 
str[3]=6:6

但每当我分开它时,就会显示出来:

str[0]=12:xyz@gmail
str[1]=com
str[2]=8:'23'
str[3]=25:'hello'
str[4]=6:6

3 个答案:

答案 0 :(得分:3)

您可以匹配以下正则表达式:

/[^.']+(?:'[^']*')?/g

请参阅regex demo

详细说明:

  • [^.']+ - '.
  • 以外的1个或多个字符
  • (?:'[^']*')? - 一个可选的'...'字符串('后跟0 {+ 1}}以外的0 +字符,后跟'

根据内容的不同,您可以使用增强版:

'

请参阅another demo

演示1(简化):



/[^.']*(?:'[^']*'[^.']*)*/g




演示2(如果内容更复杂):



var re = /[^.']+(?:'[^']*')?/g; 
var str = '12:\'xyz@gmail.com\'.8:\'23\'.25:\'hello\'.6:6';
var m = str.match(re);
document.body.innerHTML = "<pre>" + JSON.stringify(m, 0, 4) + "</pre>";
&#13;
&#13;
&#13;

答案 1 :(得分:2)

我不确定拆分,但你可以像这样使用replace(容易发生灾难性的回溯)

((?:(?:'[^']+')*[^.']*)*)(?:\.|$)

<强> Regex Demo

JS代码

&#13;
&#13;
var re = /((?:(?:'[^']+')*[^.']*)*)(?:\.|$)/g; 
var str = '\'1.2\':\'xyz@mail.com\'.8:\'2.3\'.25:\'he.llo\'.6:6\'1.2\''
document.writeln("<pre>" + str.replace(re, "$1\n") + "</pre>");
&#13;
&#13;
&#13;

答案 2 :(得分:0)

试试这个正则表达式:

new RegExp('(\.[^\:]+\:\'?[^\.]+\'?)','g');