使用RegEx在javascript中拆分字符串

时间:2014-10-10 18:05:23

标签: javascript regex

尝试使用RegEx拆分以下字符串:

"C=US,ST=NY,O=GOOGLE\, INC"

目的是让O=GOOGLE\, INC在逗号分割后保持不变。

2 个答案:

答案 0 :(得分:1)

如果你可以不分割,你可以使用这样的正则表达式捕获字段数据 编辑 - 修改以匹配虚假逃脱。

 #  /(?:^|,)((?:[^,\\]*(?:\\,|\\)?)+)(?:(?=,)|$)/

 (?: ^ | , )            # Leading comma or BOL
 (                      # (1 start), Field data
      (?:
           [^,\\]* 
           (?: \\, | \\ )?
      )+
 )                      # (1 end)
 (?:                    # Lookahead, comma or EOL
      (?= , )
   |  $ 
 )

输出>>

 **  Grp 0 -  ( pos 0 , len 4 ) 
C=US  
 **  Grp 1 -  ( pos 0 , len 4 ) 
C=US  

--------------

 **  Grp 0 -  ( pos 4 , len 6 ) 
,ST=NY  
 **  Grp 1 -  ( pos 5 , len 5 ) 
ST=NY  

--------------

 **  Grp 0 -  ( pos 10 , len 15 ) 
,O=GOOGLE\, INC  
 **  Grp 1 -  ( pos 11 , len 14 ) 
O=GOOGLE\, INC  

答案 1 :(得分:0)

您的数据看起来非常可靠:

富=巴,穗=跨度,A =摆锤\,fred的

即key = val数据对,数据中有转义的逗号。因此,如果转义的逗号在数据中仅 ,那么您可以使用简单的先行为' key ='作为你的正则表达式的一部分。假设密钥总是在大写字母中,那么这可以工作:

s = "C=US,ST=NY,O=GOOGLE\, INC"
s.split(/,(?=[A-Z]*=)/)

即,如果后跟一些大写字母和等号,则用逗号分隔。

这会给你

["C=US", "ST=NY", "O=GOOGLE, INC"]