2014-10-05 131 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)