一 正则表达式(regular expression)用于匹配字符串,是字符模式的对象。
RegExp对象语法:
1 var patt=new RegExp(pattern,modifiers);
- (pattern(模式) 描述了表达式的模式
- modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配)
2 字面量创建正则表达式:var expression =/ pattern / flags;
- 注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 )。比如,以下是等价的:
var re = new RegExp("\w+");
var re = /w+/;
一 字符类(九种):
. 任意字符(除了
换行的字符);
[ ] 限定字符范围,只对单字符而言;
数字:(d:data)
d [0~9];
D [^0~9];
字符:(s:space)
s 所有不可见字符(如:空格,tab, 回车换行);
S 所有可见字符;
w [0~9a~zA~Z]:字符,字符包括字母、数字、下划线:(w:word)
W [^0~9a~zA~Z]:非字符
二 次数(四种):
? 0个或一个;
* 0个或多个;
+ 一个或多个;
{m,n} 大于等于m,小于等于n;
{n} 前面一个字符或者()内的内容出现n次;
{n,} 前面一个字符或者()内的内容至少出现n次;
三 分组和引用(四种):
| 左边的或右边。
() 括号中的是一个组。
(?:)组合
引用第n个带圆括号的子表达式 。
五 正则表达式的修饰符:
i 执行不区分大小写的匹配。
g(global) 执行全局匹配。
m (multiple)多行匹配,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束
^ 以那个字符开头,$ 以那个字符结尾。
六 正则表达式的方法
1. exec
exec() 方法用于检索字符串中的正则表达式的匹配。 如果字符串中有匹配的值返回该匹配值,否则返回 null。
语法:RegExpObject.exec(string)
例如:(/Hello word!/g).exec("Hello word!")
["Hello word!"]
(/Heo word!/g).exec("Hello word!")
null
2. test
一个在字符串中测试是否匹配的RegExp方法,它返回true或false。
例如:写法第一种:(/java/i).test("javaScript")
true
写法第二种:
var pattern=new RegExp(‘java’,'i’); pattern.test("JaaScript")
false
七 字符串的方法
1. match
一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
例如:('aaAAB12345').match(/d{2,4}/g)
["1234"]
2. search
一个在字符串中测试匹配的String方法,它返回匹配到第一个字符位置索引,或者在失败时返回-1。类似于indexOf()方法。
例如:("javaScript").search(/script/i);
4
("javaScript").search(/qwscript/i);
-1
3. replace
replace( )方法用以执行检索与替换操作,其中第一个参数是一个正则表达式,第二个参数是要进行替换的字符串。(https://blog.csdn.net/LinBilin_/article/details/57094602)
例如: "javascript is not javaLive".replace(/java/g,'zmm')
"zmmscript is not zmmLive"
4. split
一个使用正则表达式或者一个固定字符分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法
例如:("123,4567,879").split(",")
["123", "4567", "879"]
八 锚字符:
(?=script):替换后缀是script前面的java:
(?!script):替换后缀不是script的前面的java:
推荐阅读:
解析正则表达式中的.*,.*?,.+?的含义:https://www.jb51.net/article/183106.htm