第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

需要 javascript 正則表達(dá)式,僅括號(hào)中的數(shù)字,多個(gè)

需要 javascript 正則表達(dá)式,僅括號(hào)中的數(shù)字,多個(gè)

桃花長(zhǎng)相依 2022-05-14 15:20:22
問(wèn)題:我想用純 javascript 編寫一個(gè)函數(shù),它使用帶有 :eq(0) 聲明的類似 Jquery 的選擇器,讓我們說(shuō)例如遍歷一個(gè)像這樣的表$('tr:eq(8) > td:eq(13)').val();為此,我正在嘗試編寫一個(gè)正則表達(dá)式,但我被困在這里var str = "I don't want +5+ and not 10 or [12] nor (120) but :eq(5) and :eq(120)";var matches = str.match(/\:eq\(\d+(\d{1,2})\)?/g);console.log('matches: '+matches);它只返回matches: :eq(120)但不是matches: :eq(5),:eq(120)按要求返回。我可以在這里做什么?
查看完整描述

2 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以簡(jiǎn)化您的正則表達(dá)式:


var str = "I don't want +5+ and not 10 or [12] nor (120) but :eq(5) and :eq(120)";

const matches = str.match(/:eq\(\d+\)/g);

console.log('matches: '+matches);


查看完整回答
反對(duì) 回復(fù) 2022-05-14
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

更新成功/結(jié)果以分享我的想法:


我有一張桌子


<table>


    <tr>

        <td><span>1</span></td>

        <td><span id="span2">2</span></td>

        <td><span>3</span></td>

        <td><span>4</span></td>

    </tr>


    <tr>

        <td><span>5</span></td>

        <td><span>6</span></td>

        <td><span>7</span></td>

        <td><span>8</span></td>

    </tr>


</table>

并使用以前的答案我編寫了這個(gè)小腳本,這是一個(gè)簡(jiǎn)單的選擇器引擎的開始。


const ltrim = (haystack, needle) => {

    var regex = new RegExp('^'+needle);

    return haystack.replace(regex, '');

}


const rtrim = (haystack, needle) => {

    var regex = new RegExp(needle+'$');

    return haystack.replace(regex, '');

}


const $ = (s) => {

    var el = document;


    if (!s.match(/:eq/g)) {

        var cut_index = Math.max(s.lastIndexOf('>'),s.lastIndexOf(' '))+1;

        var last = s.substring(cut_index);

        if (/#/.test(last)) el = el.querySelector(s);

        else el = el.querySelectorAll(s);

    }

    else {

        var m = s.match(/:eq\(\d+\)/g);

        var p = s.split(/:eq\(\d+\)/g);

        for (i in p) {


            if (p[i] == '') i++;

            else {

                if (i == p.length-1) {

                    if (p[i].match(/#/)) el = el.querySelector(p[i]);

                    else el = el.querySelectorAll(p[i]);

                }

                else el = el.querySelectorAll(p[i])[m[i].match(/\d+/g)];

            }

        }

    }

    return el;

}

現(xiàn)在我可以使用類似 jquery 的選擇器語(yǔ)法遍歷表


alert($('table tr td span#span2').innerHTML); // 2

alert($('table tr:eq(1) td:eq(1) span:eq(0)').innerHTML); // 6

alert($('table tr:eq(1) td:eq(2) span')[0].innerHTML); // 7

我現(xiàn)在很高興。這個(gè)表達(dá)式,例如


$('table tr:eq(1) td span').forEach(elem => {elem.classList.add('yellow')});

使用常規(guī)的 JS 語(yǔ)法來(lái)突出顯示一整行,或者只是一個(gè)單元格:


$('table tr:eq(1) td span:eq(2)').classList.add('yellow');

我不確定其他類似 jquery 的 css 選擇器的支持,將來(lái)會(huì)看到。如果有改進(jìn),將在這里進(jìn)行進(jìn)一步的更新。


查看完整回答
反對(duì) 回復(fù) 2022-05-14
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)