Javascript从字符串中提取令牌

Mic*_*ick 2 javascript

我想从这个字符串中提取令牌并构建一个数组(这是一个简化的例子):

SELECT * FROM {token1} WHERE {token2}
Run Code Online (Sandbox Code Playgroud)

所以我有一个包含两个元素的数组:

myArray[0] = "token1"

myArray[1] = "token2"

有没有一种聪明的方法可以在不遍历字符串的情况下做到这一点?

我也不希望数组中有重复项,所以

The quick {token1} dog {token2} over the {token1} wall

会给;

myArray[0] = "token1"

myArray[1] = "token2"

(这样做的真正原因是在 SQL 语句中使用日期。)

米克

Kev*_*Bot 5

您可以使用替换在字符串上运行正则表达式循环并提取令牌:

var sql = 'SELECT * FROM {token1} WHERE {token2}';

var tokens = [];

sql.replace(/\{(.*?)}/g, function(a, b) {
  tokens.push(b);
});

console.log(tokens);
Run Code Online (Sandbox Code Playgroud)