簡體   English   中英

Javascript正則表達式替換,多行

[英]Javascript regexp replace, multiline

我有一些文本內容(使用jQuery從HTML中讀取),看起來像這些示例之一:

<span>39.98</span><br />USD

或者多行以及額外的價格,例如:

<del>47.14</del>

    <span>39.98</span><br />USD

數字可以格式化為

  • 1,234.99
  • 1239,99
  • 1 239,99

等(即不僅僅是正常的十進制數)。 我想要做的就是獲得<span></span>任何值。

這是我到目前為止所提出的,但我遇到了多線方法的問題,以及可能有兩個數字的事實,我想忽略第一個。 我嘗試過使用^和$以及“m”多線修改器的變體,但沒有運氣。

var strRegex = new RegExp(".*<span>(.*?)</span>.*", "g");

var strPrice = strContent.replace(strRegex, '$1');

如果有一種方法可以在字符串中定位span標記,那么我可以在這里使用jQuery(也就是說,這不是我們此時正在處理的DOM)。

您可以先從字符串中刪除所有換行符,然后運行正則表達式:

strContent = strContent.replace(/(\r\n|\n|\r)/gm,"");
var strRegex = new RegExp(".*<span>(.*?)</span>.*", "g");
var strPrice = strContent.replace(strRegex, '$1');

使用jQuery非常簡單。 只需將HTML字符串包裝在div中並像往常一樣使用jQuery:

var myHTML = "<span>Span 1 HTML</span><span>Span 2 HTML</span><br />USD";
var $myHTML = $("<div>" + myHTML + "</div>");

$myHTML.find("span").each(function() {
   alert($(this).html()); 
});

這是一個工作小提琴

嘗試使用

"[\s\S]*<span>(.*?)</span>[\s\S]*"

代替

".*<span>(.*?)</span>.*"

編輯:既然你使用字符串來定義你的正則表達式,不要忘記esacpe你的反斜杠,所以

[\s\S] 

將會

[\\s\\S]

你要這個?

var str = "<span>39.98</span><br />USD\n<del>47.14</del>\n\n<span>40.00</span><br />USD";

var regex = /<span>([^<]*?)<\/span>/g;

var matches = str.match(regex);

for (var i = 0; i < matches.length; i++)
{
    document.write(matches[i]);
    document.write("<br>");
}

在這里測試: http//jsfiddle.net/9LQGK/

matches數組將包含匹配項。 但是你想要的並不是很清楚。 什么there's potentially two numbers and I want to ignore the first one

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM