1.正则表达式是由一个字符序列形成的搜索模式。
//语法
/字符串匹配规则/修饰符 // 修饰符可选
xiaogaigai是主体, i是修饰符(搜索时不区分大小写)
// 栗子
let partten = /xiaogaigai/i
2. RegExp 对象
一个预定义了属性和方法的正则表达式对象.
2.1 RegExp对象的属性
global:判断是否设置了 "g" 修饰符
ignoreCase: 判断是否设置了 "i" 修饰符
lastIndex:用于规定下次匹配的起始位置
multiline:判断是否设置了 "m" 修饰符
source:返回正则表达式的匹配模式
search() :用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
let str = 'hello,xiaogaigai';
console.log(str.search(/xiaogaigai/i)); // 6
replace():用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
let str = 'hello,xiaogaigai';
console.log(str.replace('hello', 'hi')); // hi,xiaogaigai
console.log(str.replace(/Hello/i, 'hi')); // hi,xiaogaigai
match(): 找到一个或多个正则表达式的匹配
let str = 'hello,xiaogaigai';
str.match('a'); // ["a", index: 8, input: "hello,xiaogaigai", groups: undefined]
split(): 把字符串分割为字符串数组
let str = 'hello,xiaogaigai';
str.split('a'); // ["hello,xi", "og", "ig", "i"]
exec(): 检索字符串中指定的值,返回找到的值 并确定其位置
let str = 'hello,xiaogaigai';
// ["hello", index: 0, input: "hello,xiaogaigai", groups: undefined]
console.log(/hello/.exec(str));
compile(): 编译正则表达式 (用于在脚本执行过程中编译正则表达式、也可用于改变和重新编译正则表达式)(已废弃)
RegExpObject.compile(regexp,modifier) // modifier规定匹配的类型。"g" 用于全局匹配,"i" 用于区分大小写,"gi" 用于全局区分大小写的匹配
test(): 检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false
let str = 'hello,xiaogaigai';
console.log(/hello/.test(str)); // true
toString() : 返回正则表达式的字符串
let str = 'hello,xiaogaigai';
console.log(/hello/.toString()); // “/hello/”
3.正则表达式的修饰符,可以组合使用
修饰符 | 描述 |
---|---|
i | 不区分大小写 |
g | 全局搜索(查找所有匹配的内容) |
m | 多行匹配 |
4. 正则表达式的模式
模式 | 描述 | 栗子 |
方括号[] | 用于查找某个范围内的字符 | [abc] 匹配方括号之间的任何字符 [^abc] 匹配任何不在方括号之间的字符 [0-9] 匹配任何从 0 至 9 的数字 (abc|df) 匹配以“|”分隔的任何选项 [a-z] 匹配任何小写字字母 [A-Z] 匹配任何大写字母 [A-z] 匹配任何A到z之间的字母 |
元字符 | 拥有特殊含义的字符 | \d 匹配数字 \D 匹配非数字 \s 匹配空白字符 \S 匹配非空白字符 \b 匹配单词边界 \B 匹配非单词边界 \w 匹配单词字符 \W 匹配非单词字符 \0 匹配NULL字符 \n 匹配换行符 \f 匹配换页符 \r 匹配回车符 \t 匹配制表符 \v 匹配制表符 \xxx 匹配以八进制数 xxx 规定的字符 \xdd 匹配以十六进制数 dd 规定的字符 \uxxx 匹配以十六进制数 xxxx 规定的 Unicode 字符 . 匹配单个字符,除了换行和行结束符 |
量词 | 所匹配的字符数量 | n+ 匹配任何包含至少一个 n 的字符串 n* 匹配任何包含零个或多个 n 的字符串 n? 匹配任何包含零个或一个 n 的字符串 n{X} 匹配包含 X 个 n 的序列的字符串 n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配 n{X, Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配 n$ 匹配任何结尾为 n 的字符串 ^n 匹配任何开头为 n 的字符串 ?=n 匹配任何其后紧接指定字符串 n 的字符串 ?!n 匹配任何其后没有紧接指定字符串 n 的字符串 |
5. 常用示例
/*是否带有小数*/
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验是否全由8位数字组成 */
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
参考文献:https://www.runoob.com/jsref/jsref-obj-regexp.html