关于正则的*和?的实际应用

0 0 javascript perl
MRRobot
MRRobot

声望值:86 0人

2019-01-30 16:49:08 提问

关注 0关注

收藏 0收藏, 33浏览

图片描述

var str='33a64727198'
console.log(/j?/g.test(str))
console.log(/3?/g.test(str))
都输出true ..
请问这两个符号存在的意义是>??

请先 登录 后评论

3个回答

  • xyf76声望 2018-09-25 09:27

    /3?/g 可以当作 /3|/g即匹配 /3/g 或 //g 其一任何字符串匹配//g都返回true
    请先 登录 后评论
  • 八零末愤青133声望 2018-09-25 09:27

    你可能把 ? 理解为单个字符只能出现一次,比如: var str='33a64727198' console.log(/3?/g.test(str)) //它匹配的不是3在字符串中最多出现1次 而是去匹配字符的时候,该字符只能在匹配结果中出现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) ,这个可以输出你正则匹配的结果 var str='33a64727198' str.match(/3*/g) str.match(/3?/g)
    请先 登录 后评论
  • Carlos Beranger174声望 2018-09-25 09:27

    var str='红富士苹果'console.log(/青?/g.test(str)) // trueconsole.log(/红?/g.test(str)) // true可以是青的也可以不是青的就等价于可以是红的也可以不是红的,所以/青?/g等价于/红?/,但是很明显这样的正则判断没有意义,即可能存在也可能不存在,那还判断什么。。。 再看var str='红苹果'console.log(/^青?苹果$/.test(str)) // falseconsole.log(/^红?苹果$/.test(str)) // true这样就看出了两个正则的区别了,第一个正则匹配的要么是青苹果要么是苹果,第二个正则匹配要么是红苹果要么是苹果。正则是工具,要匹配的字符串是结果,不同的工具在某些时候可以获取相同的结果,但我们关注的重点是只要结果是正确的就行了。*号同理
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问