用正则将字符串分割成数组

发布于 2022-09-06 01:03:18 字数 160 浏览 22 评论 0

给出字符串

var string = "${foo}bar${bar}foo";

如何分割得到

var result = ["${foo}", "bar", "${bar}", "foo"];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

戴着白色围巾的女孩 2022-09-13 01:03:18
'${foo}bar${bar}foo'
.split(/(\$\{\w+\})/)
.filter(function(str){
    return str !== ''
})
长不大的小祸害 2022-09-13 01:03:18
// 用match即可。没有必要split来分割,再对数组进行filter等操作
var str = '${foo}bar${bar}foo';
var str2 = 'foo${foo}${bar}bar${bar}${bar}foo';

var reg = /(\$\{[^\}]*\})|(\w+)/g;
var result = str.match(reg);
var result2 = str2.match(reg);

console.log(result);
// ["${foo}", "bar", "${bar}", "foo"]

console.log(result2);
// ["foo", "${foo}", "${bar}", "bar", "${bar}", "${bar}", "foo"]
深爱成瘾 2022-09-13 01:03:18

split(/\$\{.*?\}/g)

兔小萌 2022-09-13 01:03:18

一般人字符串不会那么写,如果要后面方便处理的话

只等公子 2022-09-13 01:03:18

如果字符串确实如此规律的话
不用正则,用$和}切割即可

string.split('
)  // 以$切割
    .map(str => str.split('}'))  // 以}切割
    .reduce((a, b) => a.concat(b),[]) // 合并数组
    .filter(s => s !== '')  // 过滤空字符串
    .map(s => s.startsWith('{') ? '
+s+'}' : s) // 把切割掉的符号补回来
各自安好 2022-09-13 01:03:18
"${foo}bar${bar}foo".replace(/(\${\w+(?:}))/g, '|$1|').split('|').filter(s => s !== '')
输出 ["${foo}", "bar", "${bar}", "foo"]

"${sxx${foo}bar${bar}foo}".replace(/(\${\w+(?:}))/g, '|$1|').split('|').filter(s => s !== '')
输出 ["${sxx", "${foo}", "bar", "${bar}", "foo}"]
半城柳色半声笛 2022-09-13 01:03:18
var result = string.match(/\${[^}]*}|[^\${]+/g);
难理解 2022-09-13 01:03:18
'${foo}bar${bar}foo'.match(/\${[^}]*}|\w+/g);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文