我正在尝试获取字符串中美元符号之间的值并将它们放入列表中。
例如,这是一个字符串:
var a ='Dear $name$, This is my number $number$. This is my address $address$ Thank you!'
而我想要得到的是,
var b = '$name$,$number$,$address$'
由于 $ 也在 jQuery 中使用,我是否需要注意字符串中的“$”?你有什么想法吗?
最佳答案
使用匹配
:
a.match(/\$.*?\$/g);
这将返回一个包含所有值的数组。您还可以使用
a.match(/\$.*?\$/g)||[];
确保你总是得到一个数组,因为如果没有匹配,你将得到 null
对象,这并不总是有用的。
正则表达式也在 answer of mine 中进行了解释。对于类似的问题:匹配任何内容 (.
),任意次数 (*
),尽可能少的次数 (?
)。
然后您可以使用join
将该数组连接成一个字符串:
(a.match(/\$.*?\$/g)||[]).join(',');
代码:
var a='Dear $name$, This is my number $number$. This is my address $address$ Thank you!';
var b=(a.match(/\$.*?\$/g)||[]).join(',');
输出:
"$name$,$number$,$address$"
实际上,在这种情况下,正则表达式匹配每个 $
,然后是下一个 $
之前的任何内容,最后是末尾的美元符号。如果您在末尾指定 g
(全局)标志,match
将给出结果列表。
因为这是一个字符串(以及上面的正则表达式)文字,所以不会干扰 jQuery 的 $
符号。唯一重要的是用反斜杠 (\$
) 转义该符号,因为它在 RegExp 中具有特殊含义。
关于javascript - 如何获取字符串中美元符号之间的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681763/