正则表达式
创建
var reg = /<%>/g
- g :global 全文收索
- i :ingore case,忽略大小写,默认大小写敏感
- m:multiple lines,多行搜索
元字符
( [ { \ ^ $ | ) ? * + .
[]
[]表示一个字符
[a-z]在a-z中选择一个字符
[abc0123]在abc0123中选择一个字符
[0-9a-zA-Z]
^
[^abc]除了abc以外的字符
预定义类
空白字符
- 回车
- 换行
- 制表
- 空字符串
- . [^\r\n] 除了回车符和换行符之外的所有字符
- \d [0-9] 数字字符
- \D [^0-9] 非数字字符
- \s [\t\n\x0B\f\r] 空白符
- \S [^\t\n\x0B\f\r] 非空白符
- \w [a-zA-Z_0-9] 单词字符,字母、数字下划线
- \W [^a-zA-Z_0-9] 非单词字符
边界
^ 以xxx开头
匹配在开头的字符串
&以xxx结尾的
匹配在结尾的字符串
\b 单词边界 单词边界
\B 非单词边界不单单那包括空格 还包括制表符号
var str = "header clearfix active header-fixed"
str.match([]header[])
量词
字符 含义
- ? 出现零次或一次(最多出现一次)
- 出现一次或多次(至少出现一次)
- 出现零次或多次(任意次)
- {n} 出现n次
- {n,m} 出现n到m次
- {n,} 至少出现n次
匹配url
- 只要是https:\或者http\都可以匹配
str.match(/https?:\/\/.+/g)
str.match(/^(https?)?/\/\.+/)
匹配电话
^1[3578]\d{9}$\
贪婪模式和非贪婪模式
var str = 'a "witch" and her "broom" is one'
str.match(/".*"/g)
在贪婪模式情况下,正则表达式回匹配尽量多的字符
var str = 'a "witch" and her "broom" is one'
str.match(/".*?"/g)
在非贪婪模式下,正则表达式回尽量少一点的匹配字符串
分组
- *+作用的都是一个字符
- 可以加一个括号
括号
前瞻
- exp1(?=exp2) 匹配后面是exp2的exp1
- exp1(?!exp2) 匹配后面不是exp2的exp1
正则表达式的相关方法
reg.test()
reg.exec(str)
var str = '123 456 789'
var reg = /\d{3}/
reg.exc(str)
什么是贪婪模式和非贪婪模式?
贪婪模式下,正则表达式会尽量多的匹配多个字符
在非贪婪模式下,正则表达式会尽量少的匹配字符
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。
function isValidUsername(str){
if(str.match(/^\w{6,20}$/)!==null)
return true
else return false
}
console.log(isValidUsername('aaa1'))
写一个函数isPhoneNum(str),判断用户输入的是不是手机号。
function isPhoneNumber(str){
if(str.match(/^1[3578]\d{9}$/)!==null)
return true
else return false
}
console.log(isPhoneNumber('13620305513'))
写一个函数isEmail(str),判断用户输入的是不是邮箱。
function isEmail(str){
if(str.match(/^\w+@\w+\.\w+$/)!==null)
return true
else return false
}
console.log(isEmail('jakeandkaison@163.com'))
写一个函数trim(str),去除字符串两边的空白字符。
unction trim(str) {
return str.replace(/^\s*|\s*$/g,"")
}
console.log(trim(' abc as '))
\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
\d
0-9的数字\w
[0-9a-zA-Z_]\s
空白符
包括空格 换行符 制表符 回车符[a-zA-Z0-9]
在a-zA-Z0-9选择一个字符
- \b
单词边界
- .
除了回车符和换行符以外的所有符号
量词 出现零次或多次
两次 至少出现一次
- ?
量词 最多出现一次
- x{3}
出现3次x
- ^
以xxx开头
- $
以xxx结尾