【每日一题,冲刺秋招(3)】——正则表达式

题目一:写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)

解答:

function isValidUsername(str){
  return  /^\w{6,20}$/.test(str) 
}
console.log(isValidUsername('mxlwod789'))//true
console.log(isValidUsername('123fhy'))//false

题目二:\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结尾


题目三:写一个函数isPhoneNum(str),判断用户输入的是不是手机号

解答:

function isPhoneNum(str){
  return /^1[34578]\d{9}$/g.test(str)
}
console.log(isPhoneNum(13754879652))//true
console.log(isPhoneNum(1648954875))//false

题目四:正则表达式的运行分为哪几个阶段?

解答:

1.编译

2.设定起始位置

3.尝试匹配

4.匹配失败的话,从下一位开始继续第3步

5.结果:匹配成功或失败


题目五:正则实例对象有哪些属性?

解答:

global、ingnoreCase、multiline、lastIndex、source


题目六:分别使用search、test、match、exec、replace以日期为例,提取出年月日

解答:

1、search

var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;
var string = "2017-06-26";
string.search(regex);
console.log( RegExp.$1, RegExp.$2, RegExp.$3 );
// => "2017" "06" "26"

2、test

var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;
var string = "2017-06-26";
regex.test(string);
console.log( RegExp.$1, RegExp.$2, RegExp.$3 );
// => "2017" "06" "26"

3、match(最常用)

var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;
var string = "2017-06-26";
console.log( string.match(regex) );
// =>["2017-06-26", "2017", "06", "26", index: 0, input: "2017-06-26"]

4、exec

var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;
var string = "2017-06-26";
console.log( regex.exec(string) );
// =>["2017-06-26", "2017", "06", "26", index: 0, input: "2017-06-26"]

5、replace

var regex = /^(\d{4})\D(\d{2})\D(\d{2})$/;
var string = "2017-06-26";
var date = [];
string.replace(regex, function(match, year, month, day) {
    date.push(year, month, day);
});
console.log(date);
// => ["2017", "06", "26"]

题目七:分别使用search、test、match、exec判断一个字符串中是否有数字。

解答:

1、search

var regex = /\d/;
var string = "abc123";
console.log( !!~string.search(regex) );
// => true

2、test

var regex = /\d/;
var string = "abc123";
console.log( regex.test(string) );
// => true

3、match

var regex = /\d/;
var string = "abc123";
console.log( !!string.match(regex) );
// => true

5、exec

var regex = /\d/;
var string = "abc123";
console.log( !!regex.exec(string) );
// => true

题目八:正则表达式的作用有?

解答:

1.给定的字符串是否符合正则表达式的过滤逻辑(匹配)

2.可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)

3.强大的字符串替换能力(替换)


题目九:关于身份证号,以下正确的正则表达式为( )

A.isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

B.isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;

C.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

D.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;

解答:

A选项是15位身份证号码:

 ^开头 
 [1-9] 第一位1-9中的一个 
 \d{7}七位数字(前六位省市县地区+二位年份) 
((0\d)|(1[0-2])) 月份 
(([0|1|2]\d)|3[0-1]) 日期 
\d{3}  三位数字(三位的校验位。(第十五位奇数代表男,偶数代表女),15位身份证不含X)
 $结尾 

题目九:写一个函数trim(str),去除字符串两边的空白字符。

解答:

function trim(str){
    return str.replace( /^\s*|\s*$/g,")
}
console.log(trim('    abc    df fg   '))
//abc    df fg

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值