正则表达式匹配分隔的子串

时间:2011-06-30 12:21:56

标签: javascript regex

我有一个像这样的字符串

var test = 'Hello you have multiple L2:Me here;L3:Me not here; and some other text...';

我想获得字符串数组

L2:Me here    
L3:Me not here  

格式为L(某个数字):text;

什么是正则表达式?

3 个答案:

答案 0 :(得分:1)

如果那些分号总是在那里,你可以使用这样的东西:

var re = /L[0-9]+:[^;]+/g;
var test = 'Hello you have multiple L2:Me here;L3:Me not here; and some other text...';
var match = test.match(re);
console.log(match);
// match = ["L2:Me here", "L3:Me not here"]

说明:

  • L[0-9]+:匹配L后跟任意数字序列,后跟冒号(即"L105:"
  • [^;]+匹配任何不是分号([^;]部分)的字符至少一次(+部分),只有在达到分号后才会停止
  • g标志使匹配成为全局,即不只是找到第一个匹配并停止

答案 1 :(得分:1)

我没有对此进行测试,但它应该可以正常工作

/(L\d:[a-zA-Z0-9\s]+;)/

答案 2 :(得分:0)

正则表达式是:

/L\d+:[^;]*/g

含义,以L开头,后跟一个或多个数字(\d+),:的序列,以及零个或多个字符的序列,不包括{ {1}}(;)。最后的[^;]*用于“全局”,并使正则表达式适用于多个出现。

与match:

一起使用
g