javascript使用正则表达式获得多个分隔符,包括文本字符串分隔符



我有一个字符串,我希望使用多个分隔符(包括我找不到太多信息的字符串分隔符)

我希望在/和字符串AGL的出现上分割字符串,但是当我打印出数组array[0]时,我只得到L.字符串AGL周围的引号似乎没有区别。

str = "LLF ABC TEMP / HERE / RET / UP TP 12F AGL PLACENAME VALUES / AVM / ABC / PPP / END"
var array = [];
array = str.split(/(AGL|/|)/g);  

那么最后我的数组应该有9个元素

LLF ABC TEMP

这里

RET

UP TP 12F

地名值动静脉

ABC

PPP

结束谢谢。

可以使用

str = "LLF ABC TEMP / HERE / RET / UP TP 12F AGL PLACENAME VALUES / AVM / ABC / PPP / END"
var array = str.split(/s*(?:AGL|/)s*/);
console.log(array);

注意,.split不需要/g标志,这是默认行为。

s*(?:AGL|/)s*regex匹配

  • s*-零或多个空白
  • (?:AGL|/)-一个非捕获组(这样它的值就不能出现在结果数组中)匹配AGL/
  • s*-零或多个空白。

我想这就是你想要做的,有点棘手,因为你需要使用lookbehind组:

str = "LLF ABC TEMP / HERE / RET / UP TP 12F AGL PLACENAME VALUES / AVM / ABC / PPP / END"
var array = [];
array = str.match(/(b(AGL)|(w+([^/])(?!(AGL)))+b)/g); 
console.log(array)
这是一个正则表达式(/( b(榴弹炮)| ( w +([^/])(?!( 榴弹炮)))+ b/g)。我也使用匹配而不是分割,所以你不会得到未定义的,空字符串值和'/'值在你的数组。

如果这不是你想要的,请参阅:regexr.com/66jhd这是一个很棒的测试正则表达式的web小工具。

相关内容

最新更新