[英]Return number of the last occurrence of a pattern
我正在嘗試在 HTML 代碼中最后一次出現的模式中獲取一個數字,但沒有成功。 模式是data\\\\[\\d{1,3}\\\\]
。 我怎樣才能得到下面例子中的數字03
?
<body>
<h2>JavaScript Regular Expressions</h2>
<p>TEST</p>
<p>data[01]</p>
<button onclick="myFunction()">Try it</button>
<p>data[02]</p>
<p>TEST</p>
<p id="demo" test=data[03]></p>
</body>
我用 $ 嘗試了很多組合,但我無法讓它工作。
您可以使用否定前瞻斷言。
/data\[(\d{1,3})\](?![\s\S]*data\[\d{1,3}\])/
data\\[(\\d{1,3})\\]
用於匹配您的模式, (...)
用於捕獲數字值。(?![\\s\\S]*data\\[\\d{1,3}\\])
是否定的前瞻斷言,在當前情況下,這有助於匹配任何不遵循相同格式的data-{digit}
格式字符串在那之后的任何地方格式化。 其中[\\s\\S]
用於匹配自.
不包括換行符。 const data = `data<body> <h2>JavaScript Regular Expressions</h2> <p>TEST</p> <p>data[01]</p> <button onclick="myFunction()">Try it</button> <p>data[02]</p> <p>TEST</p> <p id="demo" test=data[03]></p> </body>` console.log(data.match(/data\\[(\\d{1,3})\\](?![\\s\\S]*data\\[\\d{1,3}\\])/)[1])
更新:如果它始終是p
標記的test
屬性值,那么您可以使用DOMParser
或虛擬 DOM 元素來實現這一點,因為 RegExp 不是解析 HTML 的好方法。
const data = `data<body> <h2>JavaScript Regular Expressions</h2> <p>TEST</p> <p>data[01]</p> <button onclick="myFunction()">Try it</button> <p>data[02]</p> <p>TEST</p> <p id="demo" test=data[03]></p> </body>` var parser = new DOMParser(); var doc = parser.parseFromString(data, "text/html"); console.log(doc.querySelector('p#demo').getAttribute('test').match(/\\d+/)[0])
const data = `data<body> <h2>JavaScript Regular Expressions</h2> <p>TEST</p> <p>data[01]</p> <button onclick="myFunction()">Try it</button> <p>data[02]</p> <p>TEST</p> <p id="demo" test=data[03]></p> </body>` // create a dummy element and set content var div = document.createElement('div'); div.innerHTML = data; console.log(div.querySelector('p#demo').getAttribute('test').match(/\\d+/)[0])
JS .match()
返回一個數組,因此只需從中獲取最后一個數組項: arr[arr.length - 1]
var htmlString = document.body.innerHTML; var match = htmlString.match(/data\\[\\d{1,3}\\]/g); console.log("ALL MATCHES", match); if (match) { console.log("LAST MATCH", match[match.length - 1]); }
<body> <h2>JavaScript Regular Expressions</h2> <p>TEST</p> <p>data[01]</p> <button onclick="myFunction()">Try it</button> <p>data[02]</p> <p>TEST</p> <p id="demo" test=data[03]></p> </body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.