正则表达式
正则表达式
-
用于定义一些字符串的规则
-
计算机可以根据正则表达式,来检查一个字符串是否符合规则
-
语法:
-
var 变量 = new RegExp("正则表达式", "匹配模式"); (更为灵活)
-
在构造函数中可以传递一个匹配模式作为第二参数
-
i = 忽略大小写
-
g = 全局匹配模式
-
var reg = new RegExp("需要匹配的文本", "i")
-
-
使用字面量创建正则表达式: var 变量 = /正则表达式/匹配模式 (更为简单)
-
var reg = /a/i
-
-
-
正则中的test()方法
-
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false
-
严格区分大小写
-
-
或者
-
使用 | 表示或者的意思
-
使用[] ,里面的内容也是或的关系,如: [abc] = a或b或c
-
-
到
-
使用中横线
-
表示任意小写字母 [a-z]
-
表示任意大写字母 [A-Z]
-
表示任意数字 [0-9]
-
表示abc 或者adc 或者 aec /a[bde]c/
-
-
除了
-
除了ab以外的
-
// 可以写为[^ab]
-
-
基本用法
-
split()
-
可以将字符串拆分为一个数字
-
可以传递一个正则表达式作为参数,这样可以根据正则来拆分字符串
-
这个方法即使不指定全局匹配,也会全部拆分
-
var str = "1a2b3c4d5e6fGa9" var reg = new RegExp("[a-z]","i") res = str.split(reg) console.log(res) // ["1", "2", "3", "4", "5", "6", "", "", "9"]
-
-
match()
-
可以根据正则表达式,从一个字符串中,将符合条件的内容提取查出来
-
默认情况下,match只会找到第一个符合要求的内容,找到后就停止检索
-
可以设置正则为全局匹配模式,这样就可以匹配所有的内容了
-
将匹配到的内容封装到数组中能够返回,即使仅仅匹配到一个
-
var str = "1a2b3c4d5e6fGa9" var reg1 = new RegExp("[a-z]","i") var reg2 = new RegExp("[a-z]","g") res1 = str.match(reg1) res2 = str.match(reg2) console.log(res1) //["a", index: 1, input: "1a2b3c4d5e6fGa9", groups: undefined] console.log(res2) //["a", "b", "c", "d", "e", "f", "a"]
-
-
search()
-
如果搜索到指定内容,则会返回第一次出现的索引
-
如果没有搜到,则返回-1
-
可以接收一个正则作为参数,然后根据正则进行检索
-
只会查找第一个,不能全局匹配
-
var str = "1a2b3c4d5e6fGa9" var reg1 = new RegExp("b","i") var reg2 = new RegExp("M","g") res1 = str.search(reg1) res2 = str.search(reg2) console.log(res1) //3 console.log(res2) //-1
-
-
replace()
-
可以搜索字符串中是否含有指定的内容替换为新的内容
-
参数
-
被替换的内容,可以接收一个正则表达式作为参数
-
新的内容
-
默认只会替换第一个
-
var str = "1a2b3c4d5e6fGa9" var reg1 = new RegExp("b","ig") var reg2 = new RegExp("[a-z]","ig") res1 = str.replace(reg1,"+") res2 = str.replace(reg2,"?") console.log(res1) //1a2+3c4d5e6fGa9 console.log(res2) //1?2?3?4?5?6???9
-
-
量词
-
创建一个正则表达式,检查一个字符串中是否含有aaa
-
var reg1 = /aaa/
-
var reg2 = new RegExp("a{3}")
-
-
通过量词可以设置一个内容连续出现的次数
-
{n} 正好连续出现n次
-
(ab){3}, 表示ab正好连续出现3次
-
{ab{1,3}c}, 表示b可以出现1次到3次
-
{ab{1,}c}, 表示b可以出现1次以上
-
+表示至少1个
-
"*"表示0个或者多个,相当于{0,}
-
? 表示0个或者1个,相当于{0,1}
-
^ 表示开头,如/^a/ 表示以a开头
-
$ 表示结尾,如/a$/ 表示以a结尾
-
-
案例
-
var phoneStr = "13567890123"; var reg = /^1[3-9][0-9]{9}$/; console.log(reg.test(phoneStr))
-
补充
-
"."
-
任意字符
-
-
\
-
转译字符
-
注意 使用构造函数时,由于他的参数是字符串,而\是字符串中转译字符
-
如果要使用\则需要使用\\代替
-
-
\w
-
表示任意字母、数字、下划线
-
-
\W
-
表示出了任意字母、数字、下划线
-
-
\d
-
表示任意数字
-
-
\D
-
表示除了数字
-
-
\s
-
表示空格
-
-
\S
-
表示除了空格
-
-
\b
-
单词边界
-
-
\B
-
除了单词边界
-
-
案例
-
// 检查字符串中是否含有. var reg = /\./; var str = prompt("输入用户名"); // 去除开头和结尾的所有空格 console.log(str.replace(/^\s*|\s*$/g, ""));
-