第六章 正则表达式

2019-02-01  本文已影响0人  尺间天涯

RegExp对象

正则表达式用于对字符串模式匹配、检索、替换,是对字符串执行模式匹配的强大工具。

反斜杠是转意符,\s的意思就是空白字符

let str = 'It\'s a nice day today';
console.log(str.split(' '));
//  ["It's", "a", "nice", "day", "today"]
console.log(str.split(/\s/));
//  ["It's", "a", "nice", "day", "today"]

语法:

var reg = /pattern/modifiers;

量词

量词 描述
n+ 至少包含一个n 贪婪模式
n* 包含0个或多个n 贪婪模式
n? 包含0个,一个 非贪婪模式
n{X} 包含X个n
n{X,Y} 包含至少X个N,最多Y个N
n$ 任何n结尾
^n n
?=n 匹配任何其后紧接n的字符串
?!n 匹配任何其后不紧接n的字符串

方括号

表达式 描述
[abc] 查找方括号之间的任何字符
[^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从0-9的数字
[a-z] 查找任何从a到z的字符
[A-Z] 查找任何A-Z的字符

元字符

元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NULL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

RegExp 对象方法

方法 描述
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。
toString 返回正则表达式的字符串。

支持正则表达式的 String 对象的方法

方法 描述
match 找到一个或多个正则表达式的匹配。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。
search 检索与正则表达式相匹配的值。

贪婪模式和非贪婪模式

举例:

let reg1 = /a.*c/;
let reg2 = /a.?c/;
let str = 'hiabcaxc';
console.log(reg1.exec(str));
// ["abcaxc", index: 2, input: "hiabcaxc", groups: undefined]
// 贪婪模式可以理解为最大长度匹配
console.log(reg2.exec(str));
// ["abc", index: 2, input: "hiabcaxc", groups: undefined]
// 非贪婪模式正好相反,最小长度匹配

栗子:

// 检测身份证有效
let reg = /^((1[3-9]\d{9})|(0\d{2,3}-\d{7,8}))$/;
function phoneNum(num) {
    return reg.test(num);
}
console.log(phoneNum('010-12345678')); //true
console.log(phoneNum(13877778888)); //true
// 检测文件格式
let reg = /^\w+.(zip|rar|gz)$/;
function fileType(file) {
    if (reg.test(file)) {
        return reg.exec(file)[0];
    } else {
        return '文件格式不符合要求';
    }
}
console.log(fileType('2019.zip'));
// 2019.zip
console.log(fileType('HappyNewYear.rar'));
// HappyNewYear.rar.rar
console.log(fileType('haha.7z'));
// 文件格式不符合要求
上一篇 下一篇

猜你喜欢

热点阅读