js 正则表达式

一.前端正则有哪些用处呢

1.有效性验证 - 用户输入格式限制认证,确定用户输入是否满足相应的模式。(电话号码模式或邮箱模式等)
2.文本替换 - 可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字
3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字

二.声明一个正则对象

1.使用构造函数方式创建正则表达式

var res = new RegExp();//通过RegExp 创建一个空的正则对象。如同:var arr = new Array();创建一个空数组。
res = new RegExp(''zhan");//创建一个简单模式的正则对象,能够匹配"zhan"这个字符串。
res = new RegExp("zhan",gim); 第一个参数为匹配规则,第二个参数有三个参数,g表示全局匹配,i表示不区分大小写,m表示多行查找

2.使用字面量声明法

var res = /"zhan"/gi         //全局查找zhan这个字符串;字面量声明如同:var arr = [1];

三.正则标准

1.^以什么开头,$以什么结尾 (注:当正则中同时添加了^$时,则表示完全匹配真个字符串是否满足要求!)
2.+号表示字符至少要出现1次,*至少出现0次或以上(不出现或者出现一次或多次),\s表示空白字符,\d表示一个数字
3.\b表示单词边界
4.转义字符\,当要匹配特殊字符时候需要对其转义,正则表达式用到的所有元字符 ( [ { \ ^ $ | ) ? * + .
5.字符类 ---〉简单类,反向类,范围类,组合类,预定义类

//简单类  
var re = /[abc123]/;//将匹配abc123这6个字符中一个  
//负向类  
re = /[^abc]/;//将匹配除abc之外的一个字符  
//范围类  
re = /[a-b]/;//将匹配小写a-b 26个字母  
re = /[^0-9]/;//将匹配除0-9 10个字符之处的一个字符  
//组合类  
re = /[a-b0-9A-Z_]/;//将匹配字母,数字和下划线 

6.正则表达式中的预定义类

\d    [0-9]                   匹配数字 
\D    [^0-9]                  匹配非数字字符 
\s    [ \n\r\t\f\x0B]         匹配一个空白字符 
\S    [^ \n\r\t\f\x0B]        匹配一个非空白字符 
\w    [a-zA-Z0-9_]            匹配字母数字和下划线 
\W    [^a-zA-Z0-9_]           匹配除字母数字下划线之外的字符 

7.量词
量词(下表量词单个出现时皆是贪婪量词)

*     匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 
+     匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 
?     匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 
{n}   n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 
{n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 

多行模式

    var re = /[a-z]$/;  
    var str = "ab\ncdef";  
    alert(str.replace(re,"#"));//ab\ncde#  
    re =/[a-z]$/mg;  
    alert(str.replace(re,"#"));//a#\ncde#  
常用正则表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5]

正则方法汇总

1.test
2.exec
3.replace
4.match

let re = /a[a-z]*#/g;
	let str ="abf#dcadcabff#abdf#1";  
	console.log(re.test(str));//true
	console.log(str.match(re));//["abf#", "adcabff#", "abdf#"]
	console.log(str.replace(re,"#"));//#dc##1
//str.match(re);  返回满足条件的数组
//str.replace(re);返回替换后的字符串
//re.test(str);返回true或false

let str = "this's a string";
let arr = str.match(/[\w']+/g);
console.log(arr);  //["this"," is ","a"," string"]
posted on 2019-04-03 17:31  长安城下翩翩少年  阅读(184)  评论(0编辑  收藏  举报