我想从 {t('word')} {t("word1")} {t(`word2`)} {t(word3)}
捕获出这个数组 ['word', 'word1', 'word2', 'word3']
。
我的正则表达式是这个 /(?<=t\(([`|'|"]?))(.*?)(?=\1\))/g
.
但是,我捕获的数组里都像这样"'word'"
带有引号。
所以我应该怎么改进能达到对应的效果呢?
我想从 {t('word')} {t("word1")} {t(`word2`)} {t(word3)}
捕获出这个数组 ['word', 'word1', 'word2', 'word3']
。
我的正则表达式是这个 /(?<=t\(([`|'|"]?))(.*?)(?=\1\))/g
.
但是,我捕获的数组里都像这样"'word'"
带有引号。
所以我应该怎么改进能达到对应的效果呢?
const string = "{t('word')} {t(\"word1\")} {t(`word2`)} {t(word3)}";
string.match(/(?<=(?:^|\s)\u007b\u0074\u0028([\u0022\u0027\u0060]?))[^\u0022\u0027\u0060]+(?=\1\u0029\u007d(?:\s|$))/g);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
按照你的描述,单词里的引号和包裹单词的引号重复了,那这里用正则的话就不太好搞了,只能做个取舍,比如下面这个,舍弃单词两端的所有引号,无论这个引号是不是单词本身所具备的
这种复杂的还是建议js或者正则加js来处理,单纯的正则过于复杂的话可能会影响性能,而且像上面出现的
?<=
,?=
兼容性都需要注意