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

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

正則表達(dá)式:如何在復(fù)合表達(dá)式中獲得AND THEN運(yùn)算符的作用?

正則表達(dá)式:如何在復(fù)合表達(dá)式中獲得AND THEN運(yùn)算符的作用?

慕妹3146593 2021-04-15 17:14:31
我正在努力使用正則表達(dá)式。我想我了解個(gè)人的表達(dá)方式,但將某些內(nèi)容組合在一起完全使我感到困惑。我不了解如何使用與AND運(yùn)算符等效的東西來(lái)將我想要的片段連接成一個(gè)“完整”的匹配表達(dá)式。例如,我想將一個(gè)字符串拆分為一個(gè)數(shù)組,以中斷<1>to<57>和</1>to的任何值</57>。所以,我以為我需要這樣的東西:( '<' or '<\/' ) and ( [1-9] or [1-4][0-9] or [5][0-7] ) and '>'我可以單獨(dú)使用<[1-4] [0-9]>或</ [1-4] [0-9]>,但是當(dāng)與'|'一起使用時(shí) 它返回部分匹配項(xiàng)或在完全匹配項(xiàng)之間未定義。你能告訴我我不明白的事嗎?附件是我的例子。如果對(duì)第一個(gè)表達(dá)式單擊“嘗試”,它將在每個(gè)<21>或之后產(chǎn)生空值</21>。測(cè)試時(shí),它在console.log中打印為未定義。第二個(gè)表達(dá)式在每個(gè)標(biāo)簽之后產(chǎn)生<和</。我不明白這一點(diǎn),更不用說(shuō)如何在此問(wèn)題的前面將更完整的表達(dá)式轉(zhuǎn)換為regExp了。所需的輸出是:'This is a', '<21>', 'test', '<\/21>', '.'謝謝你。補(bǔ)充 在收到Georg對(duì)這個(gè)問(wèn)題的回答后,我開(kāi)始對(duì)轉(zhuǎn)義這些標(biāo)簽的方法感興趣,特別是因?yàn)楫?dāng)前僅在Chrome中不支持負(fù)向回溯。通過(guò)這種方式,我的意思是\<21>將被視為常規(guī)文本,并且此時(shí)不會(huì)生成字符串拆分。如果你有興趣在類(lèi)似的東西,你可能會(huì)找到答案由雷沃提供我的后續(xù)問(wèn)題在這里非常有用。let b, B = document.querySelectorAll('button');for ( b of B ) b.addEventListener( 'click', split_str, false );function split_str( evt ) {   let e = evt.currentTarget,       r = new RegExp( e.previousElementSibling.value ),       s = e.parentNode.previousElementSibling.value;   e.parentNode.lastElementChild.textContent = s.split(r);    }div > div  { border: 1px solid rgb(150,150,150); width: 500px; height: 200px;padding: 5px; }input { border: 1px solid rgb(150,150,150); width: 500px; margin-bottom: 20px; padding:5px; }<input type='text' value="This is a<21>test</21>."><div><input type='text' value="(<[1-4][0-9]>)|(<\/[1-4][0-9]>)"> <button>try</button><input type='text' value="((<|<\/)[1-4][0-9]>)"> <button>try</button><div></div></div> 
查看完整描述

3 回答

?
慕田峪7331174

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

好的,讓我們從thingy開(kāi)始。很好,但從技術(shù)上講,無(wú)需在單個(gè)括號(hào)中加上一個(gè)符號(hào)[5]

 [1-9] | [1-4][0-9] | 5[0-7]

(為清楚起見(jiàn),請(qǐng)?jiān)诖颂幒拖路绞褂每崭瘢?/p>

對(duì)于第一部分,使用a | ab時(shí),像這樣的更改讀起來(lái)更好ab?,即“ a,然后可選地是b`”。這給了我們

 < \/ ?

現(xiàn)在,您要查找的“ and”(或“ and then”)運(yùn)算符在正則表達(dá)式語(yǔ)言中非常簡(jiǎn)單-沒(méi)什么。也就是說(shuō),a and then b就是ab。

但是,如果我們像這樣簡(jiǎn)單地將兩個(gè)部分組合在一起

a  x | y | z

這將是一個(gè)錯(cuò)誤,因?yàn)?code>|優(yōu)先級(jí)較低,因此應(yīng)解釋為

ax | y | z

這不是我們想要的。因此,我們需要將數(shù)字事物放入parens中,由于下面將要解釋的原因,這些parens也必須是不可捕獲的:

<\/?  (?: [1-9] | [1-4][0-9] | 5[0-7] )

這與我們的定界符匹配,但是我們還需要介于兩者之間的所有內(nèi)容,因此我們將繼續(xù)進(jìn)行split輸入。split通常返回與分隔符不匹配的字符串?dāng)?shù)組:

"a,b,c".split(/,/) => a b c

如果我們也想包含定界符,則必須將其放置在捕獲組中:

"a,b,c".split(/(,)/) => a , b , c

因此,我們必須再次將所有內(nèi)容包裝在括號(hào)中:

(  <\/?  (?: [1-9] | [1-4][0-9] | 5[0-7] )  )

這就是原因?:-我們希望捕獲全部?jī)?nèi)容,而不是數(shù)量部分。

將所有內(nèi)容放在一起似乎可以解決問(wèn)題:


s = "This is a<21>test</21>."   
console.log(s.split(/(<\/?(?:[1-9]|[1-4][0-9]|5[0-7])>)/))


查看完整回答
反對(duì) 回復(fù) 2021-04-29
?
慕田峪4524236

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


你差不多了。這真的很簡(jiǎn)單,就像用連接替換'or'或用串聯(lián)|替換一樣and。然后,通過(guò)?:在每個(gè)組的開(kāi)頭添加以下內(nèi)容,確保您的組不匹配:


(?:<|<\/)(?:[1-9]|[1-4][0-9]|[5][0-7])>


MDN對(duì)split和正則表達(dá)式的交互進(jìn)行了解釋。但是,簡(jiǎn)短的示例解釋是:


'hi_joe'.split('_'); // ['hi', 'joe']

'hi_joe'.split(/_/); // ['hi', 'joe']

'hi_joe'.split(/(_)/); // ['hi', '_', 'joe']

'hi_joe'.split(/(?:_)/); // ['hi', 'joe']

根據(jù)評(píng)論更新,如果您還希望在結(jié)果數(shù)組中使用<##>,則將正則表達(dá)式包裝在另一組括號(hào)中。


((?:<|<\/)(?:[1-9]|[1-4][0-9]|[5][0-7])>)


查看完整回答
反對(duì) 回復(fù) 2021-04-29
  • 3 回答
  • 0 關(guān)注
  • 209 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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