创建
构造函数
修饰符只能是g i m,可以省略
var pattern = new RegExp("正则表达式内容","修饰符");
var pattern = new RegExp("abc","ig");
字面量
var pattern = /正则表达式/修饰符;
var pattern=/adc/img;
修饰符
i
ignore case 忽略大小写
m
multiline 多行匹配(\n) 如果目标字符串中没有\n的话,m修饰符无意义
g
global 全词匹配 如果加了该修饰符,在匹配时会维护一个 lastIndex 的属性,用来记录当前匹配到这个字符串时的结束位置,下一次匹配时,会从lastIndex开始 如果没有g修饰符,lastIndex一直为0
原型方法
exec()
从参数获取目的字符串 参数:字符串 返回值:类数组对象[数组,index(匹配到的目标字符串的开始下标),input…]
var pattern = /abc/g;
var str="abc";
var result=pattern.exec(str);
console.log(result);
/abc/ :只匹配abc或者它的其他大小写状态
/abc(d|e)/ :匹配abcd或abce
const readline = require("readline-sync");
var pattern=/abc/i;
var str=readline.question("请输入你要检验的字符串");
console.log(pattern.exec(str));
test()
用来检测一个字符串是否匹配某个模式 参数:str 返回值:Boolean类型 true/false
var pattern =/abc/i;
var string ="hello 123 abcd";
console.log(pattern.test(string));
toString()
参数:不需要传参 返回值:string
var pattern =/abc/i;
console.log(pattern.toString());
原型属性
属性 | 描述 |
---|
global | 是否开启了全局匹配 | ignoreCase | 是否忽略大小写 | multiline | 是否开启了多行匹配 | source | 正则表达式的字符串 | flags | 正则表达式的修饰符 |
var pattern =/abc/img;
console.log(pattern.global);
console.log(pattern.ignoreCase);
console.log(pattern.multiline);
console.log(pattern.source);
console.log(pattern.flags);
正则表达式规则
正则表达式不是js特有的,所有编程语言都可以用
字符类
符号 | 作用 |
---|
. | 用来匹配任意单个字符,行结束符除外 | \d | 匹配任意的一个阿拉伯数字,等价于[0-9] | \D | 匹配任意一个不是阿拉伯数字的字符,等价于[^0-9] | \w | 匹配任意字母、数字、下划线,等价于[A-Za-z0-9] | \W | 匹配任意不是字母、数字、下划线,等价于[^A-Za-z0-9] | \s | 匹配空白符、空格、制表符、换行符、换页符和其他Unicode(\u00A0等) | \S | 匹配一个非空白字符 | \t | 匹配一个水平制表符(tab) | \n | 匹配一个换行符 | \r | 匹配一个回车符 | \v | 匹配一个垂直制表符 | \f | 匹配一个换页符 |
var pattern=/abc./g;
var str="abcd abc abcc";
console.log(str.match(pattern));
var pattern=/abc\./g;
var str="abcd abc. abc.c";
console.log(str.match(pattern));
var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.match(pattern));
字符集合
集合 | 描述 |
---|
[0-9] | 0-9 | [A-Z] | A-Z | [^A-Z] | 取反,匹配不包括在A-Z间的值 | [012] | 只有012 |
var pattern=/^[1-9]\d{3}-(0[1-9]|1[1-2]})-(0[0-9]|[1-2][0-9]|3[0-1])$/g;
var str="2021-09-01";
var str1="2021-31-01";
console.log(pattern.test(str));
console.log(pattern.test(str1));
边界
分组
(|) 分组不太懂
Javascript中 String对正则表达式的支持
match()
要使用正则表达式的全局修饰符g 调用者:string 参数:正则表达式 返回值:数组(匹配成功结果组成的数组)
var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.match(pattern));
search()
调用者:string 参数:正则表达式,如果参数不是正则表达式,会先使用RegExp将其转为构造函数 不支持全局检索g 返回值:如果匹配成功,返回第一个匹配成功的值的索引位置;如果匹配不成功返回-1
var pattern=/...\./g;
var str="abcd abc. a0c.c";
console.log(str.search(pattern));
replace()
替换文本内容 调用者:string 参数:正则表达式,要替换的字符串 返回值:替换过后的文本(不改变 原字符串)
var text="javascript";
console.log(text.replace(/javascript/gi,"JavaScript"));
|