-
概念
什么是正则表达式?正则表达式其实也可以当做是js中的一中对象。
它的作用是解决字符串操作中一些比较麻烦的场景:比如字符串提取,字符串替换,字符串验证等。 -
写法:
正则表达式是长什么样的?既然可以把它当做是一个对象,那么就可以使用构造函数的方式去new一个正则表达式。
var reg2=new RegExp("a");var reg1=/a/;- 其中//是标记,a表示要匹配的字符
- 正则表达式匹配
匹配一个字符串是否符合自己制定的规则,可以使用正则表达式对象的test方法。
var reg=/a/; //匹配字符串中的a字符
reg.test("abc");
//正则表达式的test用来检测字符串是否满足正则表达式的要求;
//由于"abc"中存在a,所以是符合要求的,所以这段代码的返回值为:true
const isTrue = reg.test("coke");
//由于"coke"中不存在a字符,所以不符合条件 -->isTrue:false
- 正则表达式的特殊字符
4.1字符类别:
- . 表示除了换行符(\r \n)以外的任意字符
var reg=/./;
reg.test("a"); //true
reg.test("."); //true
reg.test("\r"); //false
reg.test("1\r"); //存在一个1,不是换行符,所以结果为:true
reg.test("\r\n"); //false
//注意点:如果以后要匹配.字符,不要直接写.
//为了匹配qq邮箱,写了 /qq.com/ 这是一个错误的写法:
//=>/qq.com/不仅匹配:"qq.com"也匹配"qq3com" "qq@com"
//解决方案:/qq\.com/ 或者 /qq[.]com/
- \d 表示数字
var reg=/\d/;
reg.test("123abc"); //由于存在一个数字,所以结果为true
reg.test("abcde"); //由于不存在任何数字,所以结果为false
//扩展:
var _reg=/\d\d/;
_reg.test("1b"); //不存在2个连续数字,所以结果为:false
_reg.test("a12c"); //存在2个连续数字,结果为:true
//匹配手机号码:出现了连续11个数字
var isCellphoneNumber=/\d\d\d\d\d\d\d\d\d\d\d/;
- \D 是\d的取反结果,表示不是数字
var reg=/\D/;
reg.test("123"); //由于全是数字,所以结果为:false
reg.test("123a"); //存在一个字母,所以结果为:true
var reg1=/123\D5/;
reg1.test("12345"); //false
reg1.test("123b5"); //true
- \w 匹配字母、数字、下划线 ,三者满足其一即可
var reg=/\w/;
reg.test("123"); //存在数字,结果为:true
reg.test("a"); //true
reg.test("1"); //true
reg.test("_"); //true
reg.test("-"); //false
reg.test("."); //false
reg.test("1."); //true
reg.test("_\r\n"); //true
reg.test("\r\n"); //false
-
\W 是\w的取反
-
\s 表示一个空白字符(例如:\r \n \t 空格 。。。)
var reg=/\s/;
reg.test("abc def"); //存在一个空白,结果为:true
reg.test("abc\r123"); //存在一个\r,结果为:true
reg.test("abc"); //false
- \S 是\s的取反
var reg=/\S/;
reg.test(" \r \n "); //全是空白字符,结果为false
reg.test("123 abc"); //存在一个空白,结果为true
var reg3=/\s\S/;
reg3.test(" a"); //true
reg3.test("a "); //false
reg3.test("a b"); //true
- \ 转义字符
var reg=/./; //匹配除了换行符以外的任意字符
var reg=/\./; //匹配.字符
var reg=/\//; //匹配一个正斜杠:/
var reg=/[/]/; //。。。。。。。。。
3794

被折叠的 条评论
为什么被折叠?



