当前位置:  开发笔记 > 编程语言 > 正文

匹配字符串与数字,但仅当数字前面有>时

如何解决《匹配字符串与数字,但仅当数字前面有>时》经验,为你挑选了1个好方法。

我有HTML:

30 dag beans

around 1,5 liter of water

我有javascript:

$('#ingredients').html(
    function (i, text) {
        return text.replace(/>([\d,]+)/g, '$1');
    });

正则表达式应该用'test'替换第一个数字,因为在数字之前有> tag.它不应该替换第二个数字(我们使用,对于数字小数),因为之前有空格.

所以我希望它只替换段落开头有数字的成分,而不是段落中间有数字的成分.

为什么不起作用?如果我在正则表达式中省略了>它可以工作,但是替换所有数字,甚至是在序列中间的数字.



1> Tushar..:

你的正则表达式的问题是它也取代>

.

这可以通过使用来解决

return text.replace(/>([\d,]+)/g, '>$1');
                                   ^

JSfiddle演示 Regex101演示

但有更好的方法来做到这一点.


脚步:

    迭代

    容器内的所有元素#ingredients

    获取循环中当前段落元素的innerHTML

    trim 空间

    使用正则表达式^([\d,]+)提取字符串开头的数字并替换它$1,$1这是正则表达式捕获的数字.

正则表达式说明:

    ^:开始行

    ([\d,]+):第一个捕获组.以任何顺序匹配一个或多个出现的数字和/或逗号.可以使用访问此捕获的组$1.

演示 Regex101演示

// Iterate over all the paragraph elements inside the container
$('#ingredients p[itemprop="ingredients"]').html(function(index, text) {
  // text == innerText of the current `p` element

  // The value returned will be replaced to the innerHTML
  // First trim the string to remove leading and trailing spaces
  return text.trim().replace(/^([\d,]+)/, '$1');
});
span {
  color: red
}

30 dag beans

around 1,5 liter of water

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有