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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

求大神解釋下為什么輸出是這樣的?

$p = '/\d+?\-\d+?/';

$str = "我的電話是010-12345678";

preg_match($p, $str, $match);

echo $match[0]; ?//結(jié)果為:010-1


正在回答

2 回答

不好意思。重新回復(fù)一下。

這個(gè)例子中`\d+?` 是比較容易范迷糊的。后面的那組`\d+?`你已經(jīng)知道原因了。 我說一下前面的那組`\d+?`

當(dāng)正則開始匹配的時(shí)候,`\d+?`會(huì)最先匹配`我`,發(fā)現(xiàn)不對(duì),繼續(xù)匹配,直到匹配到字符串中的第一個(gè)0,發(fā)現(xiàn)對(duì)了。但這時(shí)候重點(diǎn)來了,如果0后面匹配到杠(-)以后,才滿足`\d+?\-` 這一段。但是0后面不是-,而是1.所以會(huì)重新匹配01,然后依然是上面那樣。直到匹配到010-的時(shí)候發(fā)現(xiàn)滿足`\d+?\-` ,那么它會(huì)繼續(xù)匹配剩下的正則表達(dá)式部分。后面的你也知道了。


這里關(guān)鍵點(diǎn)是那個(gè)杠(-)因?yàn)槟阒挥衅ヅ涞礁?-)的時(shí)候才滿足`\d+?\-`這段,即匹配結(jié)果是010- ?

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

搞不懂丶 提問者

非常感謝!
2015-04-30 回復(fù) 有任何疑惑可以回復(fù)我~
#2

搞不懂丶 提問者

謝謝啦
2015-04-30 回復(fù) 有任何疑惑可以回復(fù)我~

第二個(gè)\d 匹配到了1就結(jié)束了。因?yàn)槟莻€(gè)+表示1個(gè)或者多個(gè)。既然匹配到1了,就表示正則滿足,自然就結(jié)束后面的匹配了

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

搞不懂丶 提問者

謝謝同學(xué)的回答,你說的這個(gè)我曉得,但是為什么前面的\d+?輸出的是010,而不是0呢?
2015-04-29 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
PHP進(jìn)階篇
  • 參與學(xué)習(xí)       181905    人
  • 解答問題       2647    個(gè)

輕松學(xué)習(xí)PHP中級(jí)課程,進(jìn)行全面了解,用PHP快速開發(fā)網(wǎng)站程序

進(jìn)入課程

求大神解釋下為什么輸出是這樣的?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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