目录
计算机可以根据正则表达式来检查一个字符串是否符合规则
获取字符串中符合规则的内容提取出来
regular expression
创建正则表达式对象
var reg= new RegExp("正则表达式","匹配模式");
var reg= new RegExp("a");
var str = "a"
正则表达式的方法
test():使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false
var result= reg.test(str)
匹配模式
在构造函数中可以传递一个匹配模式作为第二个参数
可以是
i 忽略大小写
g 全局匹配模式
需要加引号
可以为一个正则表达式设置多个匹配模式且顺序无所谓 ig gi
使用字面量来创建正则表达式
var 变量 = /正则表达式/匹配模式 不加引号
更加灵活,但是用构造函数创建更加灵活,可以传递 一个变量
reg = /a/i =====> var reg=new RegExp("a","i")
检查一个字符串内是否含有a
| 或
[ab] 或 (a或b)
[a-z] a到z 任意小写字母
[A-Z]任意大写字母
[A-z] 任意字母
[0-9]任意数字
[^] 在中括号里表示 除了
[^ab]是否含有除了a或b以外的
[^0-9]是否含有非数字的
{n}量词 正好出现n次 只对它前面的一个内容起作用 如果想对两个内容起作用 用括号括起来
{m,n} 出现m次到n次 {1,3} 出现一次到三次(1、2、3次)如果出现4次则false
{m,} 出现m次以上
n+ 至少一个n 相当于{1,}
n* 包含零个或多个n 相当于{0,}
n? 包含零个或一个n 相当于{0,1}
n$ 结尾为n
^n 开头为n 在[]里表示除了
\w 任意字母、数字和_ 下划线 [A-z0-9_] word
\W 和\w正好相反 除了字母数字下划线 [^A-z0-9_]
\d 数字 [0-9] digit
\D 除了数字 [^0-9]
\s 空格 space
\S 除了空格
\b 单词边界
创建一个正则表达式检查一个字符串中是否含有单词child
/\bchild\b/
\B 除了单词边界
如果在正则表达式中同时使用^$则要求字符串必须完全符合正则表达式
/./ 单一个点表示任意字符
/\./ 使用转义符 \. 表示是否含有点.
/\\/ 是否含有\ 在字符串中也得用转义符 reg.test("b.\\") 实际为b.\
注意:使用构造函数时,由于他的参数是一个字符串,而\是字符串中的转义字符,如果要使用\则要使用\\来代替
即 var reg= /\./ 表示是否含有点 var reg= new RegExp("\\.")
var reg = /a|b/i 检查是否含有a或b 不区分大小写
var reg = /[a-z]/ 检查是否为任意小写字母
var reg= /a[bde]c/ 检查是否含有abc 或 adc 或 aec
var reg=/a{3}/ 是否含有aaa
var reg=/ab{3}/ 是否含有abbb
var reg=/(ab){3}/ 是否含有ababab
var reg=/^a$/只能是a
var reg=/^a|a$/ 以a开头或以a结尾
var reg=/^1[3-9][0-9]{9}$/
邮箱 var reg=/\w{3,}(\.\w+)*@[A-z0-9]+\.[A-z]{2,7}{1,2}$/
任意字母数字下划线(三个及以上) .任意字母数字下划线(可有可无) @ 任意字母数字 .任意字母() .任意字母(可有可无)
字符串和正则相关的方法
支持正则表达式的String对象的方法
search检索与正则表达式相匹配的值
match找到一个或多个正则表达式的匹配
replace替换与正则表达式匹配的子串
split把字符串分割为字符串数组
split()
把字符串分割为字符串数组,方法中可以传递一个正则表达式作为参数,这样方法会根据正则表达式去拆分字符串 可以全局匹配
str.split(/[A-z]/) 不加引号
search()
搜索字符串中是否含有指定内容 和indexOf相似,如果搜索到指定内容 返回第一次出现的索引,如果没有则返回-1,可以接收正则表达式作为参数,更加灵活
不能全局匹配 只会查找第一个
str.search(”abc“)
str.search(/a[bef]c/)
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
str.match(/[A-z]/g)
默认情况下match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
匹配模式为g
如果需要两个匹配模式则写作 /[a-z]/ig 或 gi
match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
replace()
可以将字符串中指定内容替换为新的内容 不会影响原字符串
可以接收一个正则表达式作为参数
新内容使用空串可以用于删除不想要的内容
参数:
1.被替换的内容
2.新的内容
str.replace("a","@_@") a被替换为@_@ 默认只替换第一个
str.replace(/a/g,"@_@") 全局替换 将所有的a替换为@_@
str.replace(/a/g,"") 将所有的a删掉
去除字符串中的空格 str.replace(/\s/g,"")
去除字符串前后的空格(中间的不去)
str.replace(/^\s*/,"") 去除开头空格
str.replace(/\s*$/,"") 去除结尾空格
str.replace(/^\s*|\s*$/g,"")去除开头结尾的空格
或者用.trim()方法