Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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_Html_Regex - Fatal编程技术网

Javascript 正则表达式替换由空格分隔的整数

Javascript 正则表达式替换由空格分隔的整数,javascript,html,regex,Javascript,Html,Regex,我正在用JS创建一个MTG卡生成器,我想知道如何使用正则表达式替换卡成本中的整数?(更多用于学习而非出版) card_cost只是用户输入的文本值,我希望能够用空格分隔整数,即:用户输入:“10 1 2”整数应该被替换,但空格应该保留 我想这样开始: if(card_cost) { card_cost=card_cost.replace(/INTEGER/g,"<span class='card_costnum' src='numsymbol.png' ></span>"

我正在用JS创建一个MTG卡生成器,我想知道如何使用正则表达式替换卡成本中的整数?(更多用于学习而非出版)

card_cost只是用户输入的文本值,我希望能够用空格分隔整数,即:用户输入:“10 1 2”整数应该被替换,但空格应该保留

我想这样开始:

if(card_cost)
{
card_cost=card_cost.replace(/INTEGER/g,"<span class='card_costnum' src='numsymbol.png' ></span>");
}
if(卡成本)
{
卡片成本=卡片成本。替换(/INTEGER/g,“”);
}
这里的尝试是将整数替换为保存在范围内的整数,以显示每个数字的背景图像


现在我已经有时间考虑这个问题了,我假设我需要得到一个整数数组,这样我就可以在一个范围内将它们传回,我假设替换不足以正确捕获多个整数。

要删除所有数字字符:

if(card_cost)
{
    card_cost=card_cost.replace(/\d/g,'');
}
但是,如评论中所述,我不知道为什么
span
会出现在
replace()
中,所以我删除了它,现在上面所做的是匹配数字,并删除它们,用一个空的零字符字符串替换它们


编辑了以下关于问题意图的澄清:

if(card_cost)
{
    card_cost = card_cost.replace(/(\d)/g,function(a,b){
        return '<span class="card_costnum" src="numsymbol.png">' + a + '</span>';
    });
}

此版本将匹配单词边界有界序列(一个或多个)数字字符,并将这些匹配项包装在
span
s中

参考资料:

if(卡费)
{
卡片成本=卡片成本。替换(/\d+/g,“”);
}

假设您使用的是jQuery:

var theNumbers = card_cost.split(" ");
for (var i=0; i < theNumbers.length; i++) {
    $("#target_div").append("<span class='card_costnum'>"+theNumbers[i]+"</span>");
}
var theNumbers=card\u cost.split(“”);
对于(变量i=0;i

我认为这实现了与您所请求的非常相似的功能,但我没有使用regex。

在javascript
replace
函数中,
$&
引用搜索字符串本身,因此您可以编写

if (card_cost) {
    card_cost = card_cost.replace(/(\d+)/g, '<span class="card_costnum_$1">$1</span>');
}
someStr = "12 34 foo 5 bar"
someStr.replace(/\d+/g, "<span whatever>$&</span>")
返回

<span whatever>12</span> <span whatever>34</span> foo <span whatever>5</span> bar
 <span whatever>1</span><span whatever>2</span> etc
12等


好的,为什么要将数字替换为包含试图从中删除数字的同一字符串的范围?您的意思是要将数字替换为该数字的图像吗???问题的关键是将整数替换为一个范围,该范围具有一个类,可以在字段中的整数后面放置背景图像。范围为因为我使用类在整数后面添加背景,所以我将用一个跨度内的整数替换它们。。。返工哦,如果数字是
9
,那么您希望
span
采用什么格式?没有0填充或任何花哨的东西,只有整数本身。@Event\u Horizon,快速查看演示,看看它们是否符合(或接近符合)您的要求。如果不让我知道它们在哪里/如何失败,我会看看是否可以改进它们。肯定很有帮助,thg435有最短的代码来满足我的需要,但这也很好,谢谢。在正则表达式中添加加号会改变什么?(我没有太多的正则表达式经验)
+
表示匹配前面的字符一次或多次。
\d
本身只匹配一个数字
\d+
匹配一个或多个数字……为什么我们要假设他在使用jQuery?看起来就像是用span替换每个空格分隔的字符?不管它是字母还是数字。或者标点符号。你不必在你的答案中。这是我对我的答案的一个条件。他可以很容易地添加jQuery,如果他还没有的话,但我不认为这是不合理的。如果您愿意,我可以将其改为“添加jQuery,然后…”我对假设的表达没有问题,我关心的是假设本身。人们开始用解决方案回答JavaScript问题是否应该被认为是有效的?大卫托马斯,我完全理解。有时,我会用一种方法来回应,即如何使用我所知道的非常类似的工具来完成某些事情(例如,使用语法的Oracle RDBMS查询,我很确定在MySql中也是如此)。我使用jQuery,所以我在这里使用了它。但你的观点是公平的。这听起来和我在你的第一个例子中所寻找的完全一样,我将很快对它进行测试。这对我来说非常有效,但我有一个问题,有没有一种方法可以将regex替换为空的空格,而不删除空的html对象(例如图像标记)?@Event_Horizon:要删除空格,
str.replace(/\s+/g,”)
。第二部分我不清楚,你能提出一个关于这个问题的新问题,并举例说明输入和期望的输出吗?
someStr = "12 34 foo 5 bar"
someStr.replace(/\d+/g, "<span whatever>$&</span>")
<span whatever>12</span> <span whatever>34</span> foo <span whatever>5</span> bar
someStr = "12 34 foo 5 bar"
someStr.replace(/\d/g, "<span whatever>$&</span>")
 <span whatever>1</span><span whatever>2</span> etc