Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取美元符号字符串之间的值?_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 如何获取美元符号字符串之间的值?

Javascript 如何获取美元符号字符串之间的值?,javascript,jquery,regex,Javascript,Jquery,Regex,我试图得到字符串中美元符号之间的值,并将它们放入列表中 例如,下面是一个字符串: var a ='Dear $name$, This is my number $number$. This is my address $address$ Thank you!' 我想得到的是 var b = '$name$,$number$,$address$' 由于jQuery中还使用了$,所以我必须注意字符串中的“$”吗?您对此有什么想法吗?使用正则表达式获取匹配项: var matches = a.ma

我试图得到字符串中美元符号之间的值,并将它们放入列表中

例如,下面是一个字符串:

var a ='Dear $name$, This is my number $number$. This is my address $address$ Thank you!'
我想得到的是

var b = '$name$,$number$,$address$'

由于jQuery中还使用了$,所以我必须注意字符串中的“$”吗?您对此有什么想法吗?

使用正则表达式获取匹配项:

var matches = a.match(/\$\w+\$/g);
返回一个匹配数组,因此只需使用逗号连接即可:

var b = matches.join(',');

使用正则表达式获取匹配项:

var matches = a.match(/\$\w+\$/g);
返回一个匹配数组,因此只需使用逗号连接即可:

var b = matches.join(',');

使用
匹配

a.match(/\$.*?\$/g);
这将返回一个包含所有值的数组。你也可以使用

a.match(/\$.*?\$/g)||[];
确保您始终拥有一个数组,因为如果没有匹配项,您将获得
null
对象,这并不总是有用的

RegExp还解释了一个类似的问题:匹配任何东西(
),任意次数(
*
),尽可能少的匹配次数(

然后您可以使用
join
将该数组连接到字符串中:

(a.match(/\$.*?\$/g)||[]).join(',');
代码:

输出:

“$name$,$number$,$address$”

实际上,在这种情况下,正则表达式匹配每个
$
,然后匹配下一个
$
的任何内容,最后匹配末尾的美元符号。如果在末尾指定
g
(全局)标志,则
match
将给出一个结果列表


由于这是一个字符串(上面是一个正则表达式)文本,因此不会干扰jQuery的
$
符号。唯一重要的是用反斜杠(
\$
)转义该符号,因为它在RegExp中有特殊含义。

使用
匹配

a.match(/\$.*?\$/g);
这将返回一个包含所有值的数组。你也可以使用

a.match(/\$.*?\$/g)||[];
确保您始终拥有一个数组,因为如果没有匹配项,您将获得
null
对象,这并不总是有用的

RegExp还解释了一个类似的问题:匹配任何东西(
),任意次数(
*
),尽可能少的匹配次数(

然后您可以使用
join
将该数组连接到字符串中:

(a.match(/\$.*?\$/g)||[]).join(',');
代码:

输出:

“$name$,$number$,$address$”

实际上,在这种情况下,正则表达式匹配每个
$
,然后匹配下一个
$
的任何内容,最后匹配末尾的美元符号。如果在末尾指定
g
(全局)标志,则
match
将给出一个结果列表


由于这是一个字符串(上面是一个正则表达式)文本,因此不会干扰jQuery的
$
符号。唯一重要的是用反斜杠(
\$
)转义该符号,因为它在RegExp中有特殊含义。

基本上需要拆分和切片。我做了一个测试来展示它是如何完成的

下面是实现您想要的功能的jQuery

var a = 'Dear $name$, This is my number $number$. This is my address $address$ Thank you!';

var b = [];
var count = 0;

var split = a.split(" ");
for (var i = 0; i < split.length; i++) {
    if (split[i].charAt(0) == "$") {
        b[count] = split[i].slice(0, $.inArray("$", split[i], 2)) + "$";
        count++;
    }
}
var a='亲爱的$name$,这是我的号码$number$。这是我的地址$地址$谢谢;
var b=[];
var计数=0;
var split=a.split(“”);
对于(变量i=0;i
基本上,您需要拆分和切片。我做了一个测试来展示它是如何完成的

下面是实现您想要的功能的jQuery

var a = 'Dear $name$, This is my number $number$. This is my address $address$ Thank you!';

var b = [];
var count = 0;

var split = a.split(" ");
for (var i = 0; i < split.length; i++) {
    if (split[i].charAt(0) == "$") {
        b[count] = split[i].slice(0, $.inArray("$", split[i], 2)) + "$";
        count++;
    }
}
var a='亲爱的$name$,这是我的号码$number$。这是我的地址$地址$谢谢;
var b=[];
var计数=0;
var split=a.split(“”);
对于(变量i=0;i
您可以发布您迄今为止尝试过的内容以及尝试中不起作用的内容吗?您需要小心
$
,因为它在正则表达式中具有特殊意义。问题或答案中的任何内容都与jQuery无关。这是一个简单的Javascript问题。您可以发布到目前为止您已经尝试过的内容以及尝试中没有成功的内容吗?您需要小心
$
,因为它在正则表达式中具有特殊意义。问题或答案中的任何内容都与jQuery无关。这是一个简单的Javascript问题。