正则表达式:
正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
创建
- 构造函数
var reg=new RegExp('<%[^%>]+%>','g');
- 字面量
var reg=/<%[^%>]%>/g;
g:global,全文搜索,不添加的话搜索到第一个结果停止搜索
i:ingore case,忽略大小写,默认大小写敏感
m:multiple lines,多行搜索
元字符
正则表达式让人望而却步以一个重要原因就是转义字符太多了,组合非常多,但是正则表达式的元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符)并不多
空白符

1.png
字符类:用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个
取反:元字符[]组合可以创建一个类,我们还可以使用元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容,表达式 [^abc] 表示一个不是字符a或b或c的字符
范围类:
预定义类

2.png
边界:

3.png
量词:

4.png
贪婪模式与非贪婪模式
量词在默认下是尽可能多的匹配的,也就是大家常说的贪婪模式
var str="123456789";
console.log(str.match(/\d{3,5}/g));\\["12345", "6789"]
既然有贪婪模式,那么肯定会有非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,做法很简单,在量词后加上?即
console.log(str.match(/\d{3,5}?/g));\\ ["123", "456", "789"]
分组:使用()
/(hugner){10}/
前瞻

5.png
方法
- RegExp.prototype.test(str):方法用于测试字符串参数中是否存正则表达式模式,如果存在则返回true,否则返回false
- RegExp.prototype.exec(str):方法用于正则表达式模式在字符串中运行查找,如果exec()找到了匹配的文本,则返回一个结果数组,否则返回 null
exec()方法返回对象包括两个属性:
index 属性声明的是匹配文本的第一个字符的位置
input 属性则存放的是被检索的字符串string - String.prototype.search(reg):search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
String.prototype.match(reg):match()方法将检索字符串,以找到一个或多个与regexp匹配的文本。但regexp是否具有标志 g对结果影响很大。 - String.prototype.replace(reg, replaceStr);String.prototype.replace(reg, function)替换字符串
- String.prototype.split(reg)把字符串分割为字符数组;
范例:
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。
function isValidUsername(str){
if(!(/^\w{6,20}$/.test(str)) ) {
console.log("不是合法的用户名");
};
};
isValidUsername("abcefcge");
isValidUsername("123");
写一个函数isPhoneNum(str),判断用户输入的是不是手机号。
function isPhoneNum(str) {
return /^1[3457]\d{9}$/.test(str);
}
console.log(isPhoneNum("123abc"));
console.log(isPhoneNum("13345677890"));
写一个函数isEmail(str),判断用户输入的是不是邮箱。
function isEmail2(str) {
return /^[a-zA-Z0-9_-]+@[a-z0-9]+(\.[a-z]+){1,3}$/.test(str);
}
console.log(isEmail2("134166abc@abc.com"));
写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
return str.replace( /^\s+|\s+$/g,"");
}
console.log(trim(" hello world "));
作者:彭荣辉
链接:https://www.jianshu.com/u/0f804364a8a8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。