关于JavaScript正则表达式的面试题是前端开发者面试过程中经常会遇到的问题。以下是针对这些问题的完整攻略,希望对您有所帮助。
问题1:什么是正则表达式?
正则表达式是一种描述匹配模式的字符串。它们通常用于搜索和替换文本。
问题2:怎样创建正则表达式?
JavaScript中可以通过两种方式创建正则表达式:
- 使用RegExp对象:可以通过new关键字实例化RegExp对象,例如:
let regex = new RegExp('hello');
- 直接量声明:直接写在斜杠“/”之间,例如:
let regex = /hello/;
问题3:正则表达式的修饰符有哪些?
正则表达式的修饰符用于改变搜索行为,例如:
- i 修饰符用于执行不区分大小写的匹配。
- g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
- m 修饰符用于执行多行匹配。
问题4:正则表达式的元字符有哪些?
元字符是正则表达式中具有特殊含义的字符。以下是常用的元字符:
- ^ 匹配输入字符串的开始位置。
- $ 匹配输入字符串的结束位置。
- . 匹配除换行符之外的任何单个字符。
-
- 匹配前面的元素零次或多次。
-
- 匹配前面的元素一次或多次。
- ? 匹配前面的元素零次或一次。
- \ 匹配转义字符。
- [] 用于定义一组字符。
- [^] 用于定义不匹配的一组字符。
- () 用于组合一个子表达式。
- {n} 匹配前面的元素恰好n次。
- {n,} 匹配前面的元素n次或多次。
- {n,m} 匹配前面的元素至少n次,但不超过m次。
问题5:如何用正则表达式匹配一个字符串?
可以使用RegExp对象的test()方法或String对象的search()、match()、replace()方法来匹配一个字符串。
let str = 'hello world';
let regex = /hello/;
regex.test(str); // true
str.search(regex); // 0
str.match(regex); // ["hello", index: 0, input: "hello world", groups: undefined]
str.replace(regex, 'hi'); // "hi world"
问题6:如何匹配包含特定单词的字符串?
可以使用正则表达式的单词边界元字符\b,例如:
let str = 'hello world';
let regex = /\bhello\b/;
regex.test(str); // true
问题7:如何匹配以特定字符串开头或结尾的字符串?
可以使用正则表达式的^和$元字符,例如:
let str = 'hello world';
let regex = /^hello/;
regex.test(str); // true
regex = /world$/;
regex.test(str); // true
问题8:如何匹配一个邮箱地址?
可以使用以下正则表达式:
let str = 'abc@test.com';
let regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
regex.test(str); // true
问题9:如何匹配一个URL地址?
可以使用以下正则表达式:
let str = 'http://www.example.com';
let regex = /^http(s)?:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;
regex.test(str); // true
问题10:如何从字符串中提取数字?
可以使用以下正则表达式:
let str = 'I have 3 apples and 2 bananas';
let regex = /\d+/g;
str.match(regex); // ["3", "2"]
问题11:如何从字符串中删除所有HTML标签?
可以使用以下正则表达式:
let str = '<p>hello world</p>';
let regex = /<[^>]+>/g;
str.replace(regex, ''); // "hello world"
问题12:如何从字符串中提取所有图片链接?
可以使用以下正则表达式:
let str = '<img src="1.jpg" /><img src="2.jpg" />';
let regex = /<img.*?src="(.*?)"/g;
let result = [];
str.replace(regex, function(match, p1) {
result.push(p1);
});
console.log(result); // ["1.jpg", "2.jpg"]
问题13:如何验证一个字符串是否为合法的日期格式?
可以使用以下正则表达式:
let str = '2021-10-01';
let regex = /^\d{4}-\d{1,2}-\d{1,2}$/;
regex.test(str); // true
以上就是13道关于JavaScript正则表达式的面试题的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:13道关于JavaScript正则表达式的面试题 - Python技术站