有关.replace函数的功能范围的问题

时间:2019-04-06 21:12:14

标签: javascript jquery html replace numbers

我对Javascript还是一个新手。寻找了一段时间之后,我一直无法找到问题的答案,或者也许我只是在搜索错误的内容。

在一堂课中,我们被要求写一些东西,使用户可以输入数字并收到数字的显示以及所有指向该数字的数字。另一部分是用单词替换所有包含数字(例如5或8)的数字实例。

但是 我的问题是,是否可以使用替换功能实现相同的功能。

类似下面的内容,但是如果用户显示50,51,52,则会显示Hello,Hello,Hello,而不是Hello0,Hello1,Hello2。

  

$(this).html($(this).html()。replace(/ 5 / g,“ Hello”));

使用其他一些if语句实现了原始分配。我还可以通过写出上述内容的大量变体来模仿上面的预期目标,但这几乎不可行。

  

$(this).html($(this).html()。replace(/ 5 / g,“ Hello”));

3 个答案:

答案 0 :(得分:0)

我相信您所追求的是一个简单的涉及数字的正则表达式:

$("#numbers").on("click", function() {
  $(this).html($(this).html().replace(/\d{2}/g, "Hello"));
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<p id="numbers">51, 52, 53</p>
<p>Click the above paragraph to see magic!</p>
<sub>One-time magic only</sub>

答案 1 :(得分:0)

如果您想用一件东西替换任何长度的数字,则可以使用/\d+/之类的regular expression,意思是任意数量的数字:

let s = "50,51,52"
console.log(s.replace(/\d+/g, "hello"))

// only replace digits -- leaves everything else
let s2 = "500 some txt, 1 other,52 more"
console.log(s2.replace(/\d+/g, "hello"))

答案 2 :(得分:0)

jQuery具有一种替换元素的textContent的简便方法,即by using a function。也许您可以改用它。然后,只需将正则表达式调整为在字符串(the g flag)中多次包含多个数字(\d+)。我使用text()代替了html(),因为它们有不同的用途,前者更适合您的用例。

$('div').text(function (i, e) {
  return e.replace(/\d+/g, 'Hello');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>

如果您想在示例中的逗号后添加空格,则可以采用不同的方法。在这里,我使用类似的正则表达式将字符串拆分为数组,map将所有匹配的模式与单词“ Hello”匹配,然后再次将数组连接成字符串。

$('div').text(function (i, e) {
  return e.split(/\d+,/g).map(s => 'Hello').join(', ');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>