JavaScript学习 Ⅵ (正则表达式)
十三. 正则表达式
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来。
创建正则表达式对象
构造函数
var reg = new RegExp("正则表达式", "匹配模式");
匹配模式:
i 忽略大小写
g 全局匹配模式
字面量
使用字面量创建正则表达式
var reg = /a/i;
// 等价于
var reg = new RegExp("a", "i");
测试
test()
方法可以用来检测一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。
语法
检查一个字符串中是否有a或b:reg = /a|b/
[]里的内容也是或的关系:[ab] = a|b
、[a-z] 任意小写字母、[A-z]任意字母
检查一个字符串中是否含有abc或adc或aec:reg = /a[bde]c/
检查一个字符串中不含有啊:reg = [^a]
通过量词{}
设置一个内容出现的次数
检查一个字符串中是否含有aaa:reg = /a{3}/
检查一个字符串中是否含有ababab:reg = /(ab){3}/
检查一个字符串中是否含有abc或abbc或abbbc:reg = /ab{1,3}c/
检查一个字符串中是否含有abbc或abbbc或······:reg = /ab{2,}c/
其他常用量词:
+
:至少1个,相当于{1,}
*
:0个或多个,相当于{0,}
?
:0个或1个,相当于{0,1}
检查一个字符串中是否以a开头:reg = /^a/
检查一个字符串中是否以a结尾:reg = /a$/
如果在一个正则表达式中同时使用^$
,则要去字符去必须完全符合正则表达式。
检查一个字符串中是否以a开头,以a结尾:reg = /^a[A-z]*a$/
匹配电话号码:reg = /^1[3-9][0-9]{9}$/
检查一个字符串中是否含有.
:reg = /\./
(.
在正则表达式中匹配任意字符)
使用构造函数时,由于它的参数是一个字符串,而\
是字符串中的转义字符,如果需要使用\
则需要使用\\
来替代。
var reg = new RegExp("\.");
// 等价于
var reg = /./;
var reg = new RegExp("\\\\");
// 等价于
var reg = /\\/; // 匹配\
\w 任意字母、数字、_ [A-z0-9_]
\W 除了字母、数字、_ [^A-z0-9_]
\d 任意数字 [0-9]
\D 除了数字 [^0-9]
\s 空格
\S 除了空格
\b 单词边界 // 独立单词 例如:匹配child reg = /\bchild\b/;
\B 除了单词边界
去除开头或结尾的空格:str.replace(/^\s*|\s*$/g, "")
匹配电子邮件:邮件格式为:1a_ + . + (1a_) + @ + 1a + . + a + . + (a)
例子:hello.nihao@abc.com.cn
\w{3,} (\.\w+)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}
var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
正则表达式匹配URL参数:
var reg = new RegExp('(^|&)'+ name +'=([^&]*)(&|$)');
// 直接开始或以&开始
// 任意个非&元素
// 以$或&结束