-
定义
RegExp === Regular Expression :
一种用来描述字符组合特征
的匹配模式 -
作用
- 替换/删除文本
- 测试字符串内的模式
- 根据模式匹配从字符串中提取一个子字符串,用来
在文本或者输入字段中查找特定的文字
-
语法
var re = / 字符 / 标志; -
标志 可选
g
全局搜索。
i
不区分大小写搜索。
m
多行搜索。
y
执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。
-
常见字符
\d
表示数字字符;等价于[0-9]
\w
单词字符,数字,下划线;等价于[a-zA-Z0-9_]
\s
空白符;等价于[\t\n\f\x0B\r]
[a-zA-Z0-9]
单词字符、字母、数字
\b
单词边界
.
除了回车和换行外的所有字符;
*
出现0次或多次
+
至少出现一次
?
出现0次或1次
x{3}
出现3次x
^$
表示开始和结尾;
-
匹配模式
在整个表达式匹配成功的提前下- 贪婪模式 :尽可能多的匹配,即一般趋于最大长度匹配。
- 非贪婪模式:以最少的匹配字符。
-
使用方式
正则:
-
test () 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。
RegExp.test( str )
// 返回true
或false
-
**exec() **方法为指定的一段字符串执行搜索匹配操作。
RegExp.exec( str )
// 返回一个数组
或null
字符串:
-
search() 查找
查找该字符串对象与一个正则表达式是否匹配
str.search( regexp )
// 返回-1
或匹配项索引
-
replace() 替换
使用一个替换值,替换掉一个匹配模式。
str.test( Substr , newSubstr )
// 返回替换之后的字符串
应用
- 去除字符串两边的空白字符
function trim(str) {
var re = /^\s+|\s+$/g;
str.replace(re,"");
return str;
}
-
实现
addClass(el, cls)
、hasClass(el, cls)
、removeClass(el,cls)
function hasClass(el,cls) {
var reg=new RegExp('(\s|^)'+cls+'(\s|$)','g');
return reg.test(el.className);
}function addClass(el,cls){ if(!hasClass(el,cls)){ el.className=el.className+" "+cls; } } function removeClass(el,cls) { var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)','g'); el.className=(el.className).replace(reg,""); }
-
判断邮箱
function isEmail(str){
reg=/(^\w+)@(\w+).com$/g;
return reg.test(str);
} -
判断手机号
function isPhoneNum(str){
reg=/^1[3-8]\d{9}$/;
return reg.test(str);
} -
判断合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
reg=/^\w{6,20}$/;
return reg.test(str)? "合法":"非法";
} -
判断合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少包括两种)
function isValidPassword(str) {
if (/^[a-zA-Z0-9_]{6,20}$/.test(str)) {
return true
}else{
return "长度6-20个字符,包括大写字母、小写字母、数字、下划线至少两种"
}
} -
匹配颜色
var re = /#\w{6}/g;
var subj = "color: #121212; background-color: #AA00ef;
width: 12px; bad-colors: f#fddee #fd2 "
alert( subj.match(re) ) // #121212,#AA00ef
-
修改正则表达式
原始
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;--------------------------------->贪婪模式
str.match(pat); //输出[""hunger" , hello "world""]修改 var str = 'hello "hunger" , hello "world"'; var pat = /".*?"/g;--------------------------------->非贪婪模式 console.log(str.match(pat)); //输出["hunger","world"]
-
补全正则表达式
非贪婪模式
str = '.. .. .. '
re = //
gstr.match(re); // ["", ""]贪婪模式 str = '.. <!-- My -- comment \n test --> .. <!----> .. ' re = /<!--[^>]*/g; // str.match(re);
-
补全正则表达式
非贪婪模式
var re = /<.+?>/gvar
str = '<> <a href="/"> <input type="radio" checked> <b>'
str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
贪婪模式
var re = /<[ ^>]+>/gvar
str = '<> <a href="/"> <input type="radio" checked> <b>'
str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
网友评论