Javascript 是否可以使用正则表达式在分隔符对之间查找文本
我需要为出现在成对美元符号之间的自定义变量解析电子邮件模板,例如:Javascript 是否可以使用正则表达式在分隔符对之间查找文本,javascript,regex,parsing,text-parsing,Javascript,Regex,Parsing,Text Parsing,我需要为出现在成对美元符号之间的自定义变量解析电子邮件模板,例如: $foo$bar$baz$foo$bar$baz$wtf 因此,我想首先提取上面的“foo”,因为它位于第一对美元符号(第一和第二)之间。然后跳过“bar”,但在下一对(第3和第4)美元符号之间提取“baz” 我可以用下面的split和filter来实现这一点,但是我想知道,是否有一种方法可以用正则表达式来实现同样的功能?我假设可以使用某种形式的解析器,递归的或其他的,但在我看来,这似乎有些过分了 const body = "
$foo$bar$baz$foo$bar$baz$wtf
因此,我想首先提取上面的“foo”,因为它位于第一对美元符号(第一和第二)之间。然后跳过“bar”,但在下一对(第3和第4)美元符号之间提取“baz”
我可以用下面的split
和filter
来实现这一点,但是我想知道,是否有一种方法可以用正则表达式来实现同样的功能?我假设可以使用某种形式的解析器,递归的或其他的,但在我看来,这似乎有些过分了
const body = "$foo$bar$baz$foo$bar$baz$wtf";
let delimitedSegments = body.split('$');
if (delimitedSegments.length % 2 === 0) {
// discard last segment when length is even since it won't be followed by the delimiter
delimitedSegments.pop();
}
const alternatingDelimitedValues = delimitedSegments.filter((segment, index) => {
return index % 2;
});
console.log(alternatingDelimitedValues);
输出:['foo','baz','bar']
代码也在:只需在regexp中匹配分隔符两次
const body=“$foo$bar$baz$foo$bar$baz$wtf”;
const result=body.match(/\$[^$]*\$/g).map(s=>s.replace(/\$/g.));
控制台日志(结果)代码>只需在regexp中匹配分隔符两次
const body=“$foo$bar$baz$foo$bar$baz$wtf”;
const result=body.match(/\$[^$]*\$/g).map(s=>s.replace(/\$/g.));
控制台日志(结果)
您可以使用这个正则表达式/\$\w+\$/g
来获得预期的输出'
let regex=/\$\w+\$/g;
设str='$foo$bar$baz$foo$bar$baz$wtf';
让result=str.match(regex).map(item=>item.replace(/\$/g');
控制台日志(结果)
您可以使用这个正则表达式/\$\w+\$/g
来获得预期的输出'
let regex=/\$\w+\$/g;
设str='$foo$bar$baz$foo$bar$baz$wtf';
让result=str.match(regex).map(item=>item.replace(/\$/g');
控制台日志(结果)代码>很好,我想它必须与匹配$后跟非-$有关,就像你所做的一样,除了我忘记了全局标志,它在regex101中默认是打开的。我认为这是一个很好的规范问答,因为我在谷歌搜索时没有发现任何问题。很好,我想这将与匹配$后跟非$有关,就像你所做的一样,只是我忘记了全局标志,它在regex101中默认打开。我认为这是一个很好的规范问答,因为我在谷歌搜索时并没有发现任何关于这一点的东西。