-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
正则表达式
定义方式
正则表达式的定义共有2种方式:
-(1)显式定义;
-(2)隐式定义;
举例:
var myregex = new ReExp("[0-9]"); //显式定义
var myregex = /[0-9]/; //隐式定义
普通字符
普通字符就是az、09这类常见的字符。
元字符(特殊字符)
多个普通字符的集合
元字符 | 说明
- \d 匹配数字,相当于[0-9]
- \D 匹配非数字,相当于[^0-9]
- \w 匹配字母或数字或下划线
- \W 匹配任意不是字母、数字、汉字或下划线的字符
- \s 匹配任意的空白符,如空格、换行符、制表符等
- \S 匹配任意不是空白符的字符
- .(点号) 匹配除了换行符以外的任意字符
- [...] 匹配方括号中的所有字符
- [^...]匹配非方括号中的所有字符
连接符
[]表示匹配方括号内的任一字符。在正则表达式中,匹配数字或者英文字母的书写非常不方便。
因此,正则表达式引入了连接符“-”来定义字符的范围。
|连接符 | 说明|
|.......|...................|
|[0-9] | 匹配数字,等价于\d|
|[a-z] | 匹配英文小写字母|
|[A-Z] | 匹配英文大写字母|
|[0-9a-zA-Z] | 匹配数字或英文字母|
限定符
- * 重复0次及以上
- ? 重复0次或者1次
-
- 重复1次及以上
- {n}重复n次
- {n,}重复n次及以上
- {n,m}重复n到m次
定位符
定位符 说明
^ 限定开始位置的字符
$ 限定结尾位置的字符
\b 限定单词(字)边界的字符
\B 限定非单词(字)边界的字符
转义字符
如果我们要匹配正则表达式中的特殊字符,我们就必须在
该特殊字符前面加上反斜杠“\”将其进行转义。
需要转义的字符有:$、(、)、*、+、.、[、]、?、\、/、^、{、}、|。
这些字符都不需要记忆,见得多就自然而然记住了。
分组符
分组使用的字符为“(”和“)”,即左圆括号和右圆括号。
分组之后,用小括号括起来的表达式看出一个整体来处理。
例如:
/(123){2}/ = /123123/
-
捕获型分组( )
- 引用
- 反向引用
-
非捕获型分组(?: )
exec()可以获取部捕获型分组的内容
选择符
选择符是“|”,用于选择匹配2个选项之中的任意一个,
类似JavaScript中的“或”运算。
例如:
/(H|h)ello/ 匹配 hello或者Hello
贪婪匹配和惰性匹配
- 贪婪匹配: 普通量词,匹配尽可能多
- 惰性匹配: 加个? 匹配尽可能少
例子
var str = '<span>123</span>456</span>';
var reg1 = /<span>.+<\/span>/;
var reg2 = /<span>.+?<\/span>/;
console.log(reg1.exec(str));
console.log(reg2.exec(str));正向前瞻和反向前瞻
- 正向前瞻(零宽断言): (?=)
- 反向前瞻(负向零宽断言) (?!)
var target = ' 1.img hello.png 2.png 3.img 4.gif ';
var regImg = /\b\w+(?=\.img)\b/g;
var result = target.match(regImg);
console.log(result);
//结果: ['1','3']对数字进行千位转化,每三位数增加一个逗号
function trans(num) {
var reg = /\B(?=(\d{3})+\.)/g; //获取不为开头的从'.'开始的每三位数的位置
var str = num.toString();
var result = str.replace(reg,',');
return parseFloat(result);
}
console.log( trans(123456789.11) );Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels