正则表达式相关试题

1. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
/d: [0-9] 数字字符
\w: [a-zA-Z_0-9] 单词字符,字母、数字下划线 
\s: [\t\n\x0B\f\r] 空白符 
[a-zA-Z0-9]: 从小a到小z,大A到大Z,从0到9
\b:  单词边界 
.: [^\r\n] 除了回车符和换行符之外的所有字符
*: 出现零次或多次(任意次) 
+: 出现一次或多次(至少出现一次)
?: 出现零次或一次(最多出现一次)
x{3}:  x出现三次
^: 以xxx开头 
$: 以xxx结尾
复制代码
2.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。
function isValidUsername(str){
  return  /^\w{6,20}$/.test(str) 
}
console.log(isValidUsername('mxlwod789'))//true
console.log(isValidUsername('123fhy'))//false

复制代码
3.写一个函数isPhoneNum(str),判断用户输入的是不是手机号。
function isPhoneNum(str){
  return /^1[34578]\d{9}$/g.test(str)
}
console.log(isPhoneNum(13754879652))//true
console.log(isPhoneNum(1648954875))//false
复制代码
4.写一个函数isEmail(str),判断用户输入的是不是邮箱。
function Email(str){
   return /^[0-9a-zA-Z]+@[a-zA-Z]+(.com)+$/.test(str)
}
console.log(Email('136987521@qq.com'))//true
复制代码
5.写一个函数trim(str),去除字符串两边的空白字符。
function trim(str){
    return str.replace( /^\s*|\s*$/g,")
}
console.log(trim('    abc    df fg   '))//abc    df fg))
复制代码
6.什么是贪婪模式和非贪婪模式?
var str = 'you "are" so "beautiful"'
str.match(/".*"/g)//[""are" so "beautiful""]
复制代码

贪婪模式

第一个查找字符是",正则在第五个位置找到匹配它,第二个字符是.,.意思是任意字符,*.说明任意字符可以重复一次甚至多次,所以就一直匹配到最后。再后面突然发现,咦!还有一个正则"要匹配,(为什么说它贪婪,自顾自的一直匹配下去也不先看看其他的)因因此正则引擎倒过来回溯,换句话说就是一个字符一个字符倒过来缩减匹配,l不是,u不是,f不是就一直找啊找。终于找到了它的最爱,所以最后输出为[""are" so "beautiful""].非贪婪模式相反,输出结果为["are" "beautiful"] var str = "you "are" so "beautiful""

偷偷配张图,一目了然。

共勉

转载于:https://juejin.im/post/5ba3a04c6fb9a05d0260ef7e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值