为了账号安全,请及时绑定邮箱和手机立即绑定

通过正则表达式匹配拆分字符串

通过正则表达式匹配拆分字符串

智慧大石 2022-12-22 13:07:03
我有以下问题。我尝试根据正则表达式拆分字符串。我想将其拆分{{ name }},{{ age }}依此类推。预期输出应如下所示:["hy my name is: ", "{{ name }}", " and i am ", "{{ age }}", " old"]我目前的尝试是这样的:let str = "hy my name is: {{ name }} and i am {{ age }} old";let vars = str.split(/({{)(.*)(}})/);console.log(vars);
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超4个赞

你需要

JS固定演示:

let str = "hy my name is: {{ name }} and i am {{ age }} old";

let vars = str.split(/({{.*?}})/);

console.log(vars);

// => [ "hy my name is: ", "{{ name }}", " and i am ", "{{ age }}", " old"]

请注意,仅当内部有数字时,{和才是特殊的,例如. 在中,花括号不能被解析为限制量词,因为没有数字,因此,您可以转义字符以防止出现任何歧义。}{6}{{.*?}}{

此外,如果您在字符串的开头有一个匹配项,则结果数组中将有一个空元素,那么您需要删除空元素:

str.split(/({{.*?}})/).filter(Boolean)


查看完整回答
反对 回复 2022-12-22
?
富国沪深

TA贡献1790条经验 获得超9个赞

而不是split,你可以使用这个正则表达式match:


/{{.*?}}|.+?(?={{|$)/g

代码:


let str = "hy my name is: {{ name }} and i am {{ age }} old";

let vars = str.match(/{{.*?}}|.+?(?={{|$)/g);

console.log(vars);

正则表达式详细信息:

  • {{.*?}}: 匹配一个字符串{{...}}

  • |: 要么

  • .+?:匹配满足下一个先行条件的任何字符的 1+

  • (?={{|$):确保我们{{在下一个位置有枯萎或行尾的积极前瞻条件


查看完整回答
反对 回复 2022-12-22
  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号