2017-07-19 57 views
1

我试图获取'null ['和']'之间的任何字符串,但对于一些长字符串它的丢失立即]和打印文本,直到一些随机']' 但是,如果我缩短字符串,其工作正常,Javascript正则表达式不能正常工作

我怎样才能找出文本直到立即],而不是直到一些随机']'?

例如,

“值”: “vale0 [var0]”, “空[第一]”, “值”: “vale2 [VAR1]”, “值”: “vale3 [VAR3]”

<html> 
<head> 
    <title>Untitled</title> 
    <script type="text/javascript"> 
     function run(){ 
      code = document.getElementsByTagName("html")[0].innerHTML; 
      results = code.match(/null\[(\S*)\","/g); 
      for (i=0;i<results.length;i++) { 
      value = results[i].match(/null\[(\S*)\","/); 
      alert (value[1]) 
    } 
} 
</script> 
</head> 
<body onload="run()"> 
     registerFragment("qweeqeqw","null[country-  name-IR_1]","AI_0_1264":"Anguilla[country-name-AI_18096]</body> 
</body> 
</html> 
+0

好像你需要['/空\ [([^ \ S \] *)\ “”/ g' ](https://regex101.com/r/uNC4FT/1) –

+0

或者https://regex101.com/r/uNC4FT/2 –

回答

0

看起来你的正则表达式有点不完整。如果您想要两个已知序列之间的最小匹配字符,请将?运算符添加到*。这将使*运营商“非贪婪”。

null\[(\S*?)\"," 

但是在该版本中,右括号将包含在匹配组中。如果你想让右括号不在比赛中,那么也要添加那个字符。 (这里,我也是第一次"前更换\,因为它没有必要逃避"。)

null\[(\S*?)]"," 

而且,在这一点上,你甚至不需要检查的","序列,因为收盘]应该做的工作对自己:

null\[(\S*?)] 

regex101.com example

+0

“添加?运算符到*。这将使*操作符“不贪婪”。 “ 正是我在找什么,谢谢! –