正则表达式js面试题?js基础面试题
- 科技
- 2023-08-14 11:49:18
- 123
大家好,关于正则表达式js面试题很多朋友都还不太明白,今天小编就来为大家分享关于js基础面试题的知识,希望对各位有所帮助!正则表达式属于js吗答案是不属于。因为正则表达...
大家好,关于正则表达式js面试题很多朋友都还不太明白,今天小编就来为大家分享关于js基础面试题的知识,希望对各位有所帮助!
正则表达式属于js吗
答案是不属于。
因为正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式,可以运用在js里面,也可以运用在各种后端语言中。
js 正则表达式
在JavaScript中,正则表达式通常用于两个字符串方法:search()和replace()。
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
Java程序员面试中容易被问哪些问题
1.前台后台都做吗?10分
这一般是我的第一个问题,超过90%的人会回答:"都做,后台多一点,前台少一点"
这不是我想要的答案,鬼都知道程序员都要多少涉及一下前台,后台更不用说了.
碰到过一个聪明人,他是这么回答的:前台js写的比较熟练,html的框架模板也能搭建的非常整齐美观,只是特效能力比较差
这个问题我不想过多讨论,加分但不减分
2.事务,什么是事务,为何用事务10分
大部分面试者,就会举各种各样的例子(比如银行存钱,这个最多)来说明这个问题,其实他们都理解.
但这不是我想要的答案,我期望的答案只有一句:"保证数据的一致性和完整性",可惜只有5%左右的人答出来了
这个问题可以大概了解出面试者的分析能力,以及语言总结能力,还有他们对这个玩意的理解程度
答不出减分,举例子不加分
3.面向切面(AOP),原理是什么10分
这个就是对技能的掌握程度了
大部分又是举例子,什么找中介啊之类的,其实就是来掩盖他们懂一点实现逻辑,但是不知道源码怎么实现的.
但还真是有学霸能把代理的原理讲出来,非常好.
答不出减分,举例子不加分,讲出原理双倍分.
4.两个项目之间如何通信10分
很基础的问题,答上来就有分,说明你接触或者了解过网络
5.在上个问题基础之上问,碰到乱码怎么解决,utf-8和gbk可以直接转换么10分
大部分应聘者到这里基本就开始胡扯了.有说声明字符串编码接收的,有说改项目编码的,各种各样五花八门.
更有甚者,utf-8和gbk可以直接转换...
直接说明了他们完全没有遇到过此类问题,也并不了解编码.
答不出不减分,胡扯减分,答对双倍分.
6.简述一项技术或设计模式的原理20分
这个几乎是送分的,但90%的人答不出.我很不解.
答不出减分,答出加分
-----------------------------------------------------------------------------------------------------------------------------
问完以上几个问题大概可以判断出应聘者的技术程度
不管怎么样
希望多锻炼自己的口才与技术.
不到40行的JavaScript代码,如何构建一个正则表达式引擎
本所一个程序员GG写的,拿走不谢!
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<title></title>
</head>
<body>
<divid="content"></div>
<scripttype="text/tpl"id="template">
<p>name:{{this.name}}</p>
<p>age:{{this.profile.age}}</p>
{{if(this.sex){}}
<p>sex:{{this.sex}}</p>
{{}}}
<ul>
{{for(variinthis.skills){}}
<li>{{this.skills[i]}}</li>
{{}}}
</ul>
</script>
<scripttype="text/javascript">
varmtpl=function(tpl,data){
varre=/{{(.+?)}}/g,
cursor=0
reExp=/(^()?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,
code='varr=[];\n';
//解析html
functionparsehtml(line){
//单双引号转义,换行符替换为空格,去掉前后的空格
line=line.replace(/('|")/g,'\\$1').replace(/\n/g,'').replace(/(^\s+)|(\s+$)/g,"");
code+='r.push("'+line+'");\n';
}
//解析js代码
functionparsejs(line){
//去掉前后的空格
line=line.replace(/(^\s+)|(\s+$)/g,"");
code+=line.match(reExp)?line+'\n':'r.push('+line+');\n';
}
while((match=re.exec(tpl))!==null){
//开始标签{{前的内容和结束标签}}后的内容
parsehtml(tpl.slice(cursor,match.index))
//开始标签{{和结束标签}}之间的内容
parsejs(match[1])
//每一次匹配完成移动指针
cursor=match.index+match[0].length;
}
//最后一次匹配完的内容
parsehtml(tpl.substr(cursor,tpl.length-cursor));
code+='returnr.join("");';
returnnewFunction(code.replace(/[\r\t\n]/g,'')).apply(data);
}
vartpl=document.getElementById("template").innerHTML.toString();
document.getElementById("content").innerHTML=mtpl(tpl,{
name:"zhaomenghuan",
profile:{
age:22
},
sex:'man',
skills:['html5','javascript','android']
});
</script>
</body>
</html>
js正则表达式定义
正则表达式,又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
一、在js中定义一个正则表达式
[]中括号中可以写多个任意字符,代表只匹配一个字符
[abc]:代表可以匹配a,b,c三个字母中的任意一个字母
1./....../以/开头,以/结尾,中间的内容为正则表达式
letregex=/[abc]/;
2.newRegExp对象
letregex=newRegExp("[abc]");//此行的代码可以将一个字符串转换为正则表达式
letregex=newRegExp(/[abc]/);
二、正则表达式中的两个方法
test():返回一个boolean值,代表是否匹配。
lets="abcde";
console.log(/[abc]/.test(s));//true
exec():返回一个数组,数组中存放正则表达式匹配的元素。
console.log(/[abc]/.exec(s))
//["a",index:0.input:"abcde"];
//a:匹配到的字符
//index:匹配到的字符的索引
//input:匹配的字符串
三、正则表达式在js中的作用
1.正则表达式时专门用来处理字符串的
2.正则表达式可以从字符串中查找需要的数据
3.正则表达式可以从字符串中获取需要的数据
4.正则表达式可以从字符串中替换需要的数据
[abc]:代表可以匹配a,b,c三个字母中的任意一个字母
[0-9]:代表匹配任意一个数字
[a-z]:代表可以匹配小写字母中的任意一个
[A-Z]:代表可以匹配大写字母中的任意一个
[a-zA-Z]:代表匹配所有的字母
[^]:如果中括号中以^开头,代表非
[^0-9]:代表匹配非数字的任意一个字符
[^a-z]:代表可以匹配非小写字母中的任意一个
[^A-Z]:代表可以匹配非大写字母中的任意一个
[^a-zA-Z]:代表匹配所有的非字母
简写:
\d=>[0-9];
\D=>[^0-9];
\w=>[0-9a-zA-Z_]匹配字母数字和下划线中的任意一个字符串
\W:[^0-9a-zA-Z_]
\s:匹配空白字符
\S:除了空白符外的所有字符
.匹配除了换行符之外的所有的任意一个字符
\.匹配一个点
letX=//;//定义一个新的正则表达式
X{n}:匹配n个X
X{n,}:至少匹配n个X
X{n,m}:匹配n到m个X
四、正则表达式
1.贪婪式表达式
letX=//;//定义一个新的正则表达式
//X*:匹配0到多个,等价于X{0,}
//X+:至少匹配一个,等价于X{1,}
//X?:匹配最多一个等价于X{0,1}
2.非贪婪式表达式=>在贪婪式表达式后添加一个?
letX=//;//定义一个新的正则表达式
//X*?:匹配0
//X+?:至少匹配一个
//X??:匹配最多一个
3.限定符
^:如果出现在正则表达式的第一个位置代表以...开头
/^[0-9]/以0-9中任意一数字开头
$:如果出现在正则表达式的尾部代表以...结尾
/[0-9]$/以0-9中任意一数字结尾
4.选择
|:或
5.分组
(...)小括号组从左到右进行查询
6.引用
\num引用num组的匹配内容,num从1开始
7.命名捕获组
(?<key>\d+)将d+匹配的内容赋值给key可以通过exec().groups获取key的值
8.非捕获组匹配
regex=/famil(?:y|ies)/
vars11="familysss";
console.log(regex.exec(s11))
letversion="Wind1ow98";
//regex=/Window\s+(\w+)/
regex=/(?<!Window)\s+(\w+)/
console.log(regex.exec(version))
famil(?:y|ies)此时的小括号不能算作分组
9.断言
?=正向确定断言
?!正向否定断言
?<=反向确定断言
?<!反向否定断言
10.判断一个字符串中是否有手机号
/1[3-9]\d{9}/
//此为包含字符串中有符合该条件则返回true
/^1[3-9]\d{9}$/
//此为一个以1开头十一位的数字字符串
好了,关于正则表达式js面试题和js基础面试题的问题到这里结束啦,希望可以解决您的问题哈!
本文链接:http://wxnzbj.com/ke/156.html