2014-10-05 134 views
-2

字符串分割到一个数组我有一个字符串:的Javascript正则表达式 - 如何基于正则表达式

"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$" 

我想创建一个数组,其中包括仅在$开始和结束的话。 对于这个例子的结果,我寻找的是:

["$CREATED_NEW_INCIDENT$","$BASED_ON$", "$EVENTS$"] 

我知道,我可以用正则表达式做,但我还没有成功。 此外,当我找到正确的正则表达式时,我该怎么做?拆分它?

回答

1

你不需要拆分它们。只要符合使用正则表达式

/\$[^$]+\$/g 

像这样

var str = "<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$"; 
var arr = str.match(/\$[^$]+\$/g); 
0

只是$开始配对,直到你找到一个$

var regEx = /\$.*?\$/g; 
console.log(data.match(regEx)); 
# [ '$CREATED_NEW_INCIDENT$', '$BASED_ON$', '$EVENTS$' ] 

这里

  • .意味着匹配任何字符。

  • .*意味着匹配任何字符,零次或多次

  • .*?装置匹配任何字符,零次或多次,但仅匹配尽可能最小。

如果我们不.*?使用?,它将匹配从第一$符号到最后$符号。

0

您可以使用:

var s = "<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$"; 
var m = s.match(/(\$[^$]*\$)/g); 
//=> ["$CREATED_NEW_INCIDENT$", "$BASED_ON$", "$EVENTS$"] 
0

您还可以使用:

"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$".match(/\$[\w]+\$/g)