我有一个字符串:
"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$"
我想创建一个数组,其中只包含以$开头和结尾的单词。 对于这个例子,我正在寻找的结果是:
["$CREATED_NEW_INCIDENT$","$BASED_ON$", "$EVENTS$"]
我知道我可以用正则表达式来做,但我还没有成功。 而且,当我找到正确的正则表达式时我该怎么办?分开了吗?
答案 0 :(得分:1)
您不需要拆分它们。只需使用正则表达式匹配
/\$[^$]+\$/g
喜欢这个
var str = "<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$";
var arr = str.match(/\$[^$]+\$/g);
答案 1 :(得分:0)
刚开始与$
匹配,直到找到$
。
var regEx = /\$.*?\$/g;
console.log(data.match(regEx));
# [ '$CREATED_NEW_INCIDENT$', '$BASED_ON$', '$EVENTS$' ]
下面
.
表示匹配任何字符。
.*
表示匹配任何字符,为零次或多次
.*?
表示匹配任何字符,零次或多次,但只能尽可能匹配。
如果我们不在?
中使用.*?
,则它会从第一个$
符号到最后一个$
符号匹配。
答案 2 :(得分: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$"]
答案 3 :(得分:0)
您也可以使用:
"<b>Dispatcher Number1 $CREATED_NEW_INCIDENT$ </b> $BASED_ON$ 1 $EVENTS$".match(/\$[\w]+\$/g)