我正在處理一個使用正則運算式函式的專案。
這是我在 jsFiddle 中的代碼
我自己的 JsFiddle 代碼
和 HTML 在這里
<div class="post-body">
<a href='/'>color=(green) title=(Hello World) caption=(Hello City 2) post=(New)</a>
</div>
和 js 在這里
$(".post-body").each(function() {
var e = $(this),
t = e.find("a").text();
if (t) {
var a = t.match(/title=\(([^)]*)\)\s caption=\(([^)]*)\)/);
if (a) {
var s = a[1];
0 != s && e.find("a").text(s), 0 != i && e.find("a").text(i)
}
}
});
這段代碼作業正常,但是當我輸入顏色和發布值時,代碼停止作業。
我不知道為什么所有的值都沒有顯示出來My World Hello City 2 New?
下面當我嘗試放置值然后代碼不起作用時,我還希望應該有可選的,以便我們可以使用一個值或所有值,例如在這種情況下只使用兩個值 title和caption,或者我們可以使用所有值,如color=(green) title=(Hello World) caption=(Hello City 2) post=(New)
$(".post-body").each(function() {
var e = $(this),
t = e.find("a").text();
if (t) {
var a = t.match(/title=\(([^)]*)\)\s caption=\(([^)]*)\)\s post=\(([^)]*)\)\s color=\(([^)]*)\)\s content=\(([^)]*)\)\s size=\(([^)]*)\)/);
if (a) {
var s = a[1],
i = a[2];
m = a[3];
n = a[4];
z = a[5];
y = a[6];
0 != s && e.find("a").text(s), 0 != i && e.find("a").text(i), 0 != m && e.find("a").text(m), 0 != n && e.find("a").text(n), 0 != z && e.find("a").text(z), 0 != y && e.find("a").text(y)
}
}
});
在研究中,我發現有人創建的代碼可以正常作業,這可能有助于解決我的問題
作業 JsFiddle 代碼
但這是由專家開發人員創建的代碼,它的著作權與此相同,我正在嘗試創建自己的正版代碼,但它不起作用。我希望在這里我能得到一些解決方案。任何形式的幫助都非常感謝!
uj5u.com熱心網友回復:
/(?:([a-zA-Z]{3,}) =\(([^)]*)\))/g如果您想在某處顯示結果,您可以使用此正則運算式將所有現有欄位匹配到您的語法中,并使用 matchAll 將所有欄位放入一個陣列并像這樣回圈遍歷陣列:
$(".post-body").each(function() {
var e = $(this),
t = e.find("a").text();
if (t) {
var a = [...t.matchAll(/(?:([a-zA-Z]{3,}) =\(([^)]*)\))/g)];
if (a) {
a.map(function(item, key){
console.log(item)
let k = item[1];
let v = item[2];
$("#results").append(`<span>${v}</span>`);
});
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="post-body">
<a href='/'>color=(green) title=(Hello World) caption=(Hello City 2) post=(New) title=(Hello World 3)</a>
</div>
<br />
<div id="results">
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391069.html
標籤:javascript 查询 正则表达式 功能 比赛
上一篇:在R中轉置串列的元素
