鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 關(guān)于正則的*和?的實(shí)際應(yīng)用

關(guān)于正則的*和?的實(shí)際應(yīng)用

圖片描述

var str='33a64727198'
console.log(/j?/g.test(str))
console.log(/3?/g.test(str))
都輸出true ..
請(qǐng)問這兩個(gè)符號(hào)存在的意義是>??

回答
編輯回答
玩控

/3?/g 可以當(dāng)作 /3|/g
即匹配 /3/g 或 //g 其一
任何字符串匹配//g都返回true

2018年1月27日 17:31
編輯回答
陌如玉

var str='紅富士蘋果'
console.log(/青?/g.test(str)) // true
console.log(/紅?/g.test(str)) // true
可以是青的也可以不是青的就等價(jià)于可以是紅的也可以不是紅的,所以/青?/g等價(jià)于/紅?/,但是很明顯這樣的正則判斷沒有意義,即可能存在也可能不存在,那還判斷什么。。。

再看
var str='紅蘋果'
console.log(/^青?蘋果$/.test(str)) // false
console.log(/^紅?蘋果$/.test(str)) // true
這樣就看出了兩個(gè)正則的區(qū)別了,第一個(gè)正則匹配的要么是青蘋果要么是蘋果,第二個(gè)正則匹配要么是紅蘋果要么是蘋果。正則是工具,要匹配的字符串是結(jié)果,不同的工具在某些時(shí)候可以獲取相同的結(jié)果,但我們關(guān)注的重點(diǎn)是只要結(jié)果是正確的就行了。*號(hào)同理

2017年5月29日 15:38
編輯回答
淺淺

你可能把 理解為單個(gè)字符只能出現(xiàn)一次,比如:

var str='33a64727198'
console.log(/3?/g.test(str))  //它匹配的不是3在字符串中最多出現(xiàn)1次

而是去匹配字符的時(shí)候,該字符只能在匹配結(jié)果中出現(xiàn)0-1次。

var str = 'abbc'
console.log(/ab?c/.test(str1))  // 輸出false

var str = 'abc'
console.log(/ab?c/.test(str))  // 輸出true

你可以使用 str.match(reg) ,這個(gè)可以輸出你正則匹配的結(jié)果

var str='33a64727198'

str.match(/3*/g) 
str.match(/3?/g)
2017年8月11日 07:20