- JavaScript正则表达式
- 1.生成一个正则表达式regexObj
- 2.regexObj.test(str)
- 字符类
- 元字符
- 量词
JavaScript正则表达式
1.生成一个正则表达式regexObj
- 描述字符串规则的表达式,两种方式
- 直接量:
/pattren/attrs(/规则/属性) - 对象构造方式:
new RegExp(pattern,arrtes) (/规则/属性)
2.regexObj.test(str)
- 测试正则表达式regexObj与指定字符串是否匹配
/10086/.test('10086') //true/10086/.test('12314') //false/10086/.test('x10086s') //true //true
- 由此看到
.test()匹配了正则表达式,但是最后一条出来了一个问题。如果这种情况下/10086/.test('x10086s')正则表达式匹配到该字符串中确实含有此正则表达式 - 所以必须要有一些限制,以下就是限制方法
锚点
//起始位置/^http:/.test('http://www.kejiganhuo.com') // true 以http:为起始的字符串可以匹配/^http:/.test('attp://www.kejiganhuo.com') // false/^http:/.test('https://www.kejiganhuo.com') //false//结尾位置/\.jpg$/.test('1.jpg') // true 以.jsp结尾的字符串可以匹配/\.jsp$/.test('1.jpg ls') // false//单词边界/\bis\b/.test('this is tyrmars') // true 这里is才是正则所匹配的,匹配的就是is,就是看有没有is字符串/\bis\b/.test('this') // false this是无法匹配单词边界为is/is\b/.test('this tyrmars') // true 这样就可以匹配,因为单词左边界没有限制
example1
/^10086$/.test('10086') //true
- 这种方法只能检测固定的号码,但是我们想检测同类的手机号码,所以就需要用到如下 字符类
字符类
- 匹配一类字符中的一个,采用
[],相当于限定字符集
[abc]:a或b或c[0-9]:一个数字[^0-9]:非数字的一个字符[a-z]:一个字母.:任意一个字符(除还行外)
/[0-9]/.test(123) // true/[^1-9]/.test(0123) // false/[12345]/.test(0) // false/[abc]/.test('abcdefgh') //true/[abc]/.test('fgh') //false
example2
/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(12345678901) //true
[0-9]可以被优化,所以学习到了元字符,元字符是具有特殊意义的字符
元字符
- 具有特殊意义的字符
^、$、\b \d:[0-9]\D:[^\d]\s:空白符\S:[^\s]\w:[A-Z]\W:[^\w]
example3
/^1\d\d\d\d\d\d\d\d\d\d\d$/.test(12345678901) //true
- 不过呢,想一下这些
\d都是重复的,所以需要用到量词
量词
- 出现的次数
{m,n}:m到n次*:{0,} 出现0或n次?:{0,1} 出现0或者1次+:{1,} 出现1或n次