使用RegEx在javascript中拆分字符串

Splitting string in javascript using RegEx

本文关键字:拆分 字符串 javascript RegEx 使用      更新时间:2023-09-26

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

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

其目的是使O=GOOGLE', INC在逗号上拆分后保持完整。

如果可以不进行拆分,只需使用类似这样的正则表达式即可捕获字段数据
edit-修改为匹配伪造的转义。

 #  /(?:^|,)((?:[^,'']*(?:'',|'')?)+)(?:(?=,)|$)/
 (?: ^ | , )            # 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  

您的数据看起来是相当可靠的形式:

foo=bar,spic=span,a=bob'',fred

即,成对的key=val数据,数据中有转义逗号。因此,如果数据中的转义逗号仅为,那么您可以在regexp中使用简单的"key="先行查找。假设密钥总是在首都,那么这就起作用了:

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

如果后面跟一些大写字母和等号,就用逗号分开。

这会给你

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