最近用到了一些正则表达式的操作,有点遗忘,在这里回顾一下。如有遗漏错误,请指正。
一 简介
来看下JS文档中对正则表达式的介绍:
如果原来没有使用过正则表达式,那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。
请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件:
data1.dat
data2.dat
datax.dat
dataN.dat
如果使用 * 字符代替 ? 字符,则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
尽管这种搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念,不过正则表达式的功能更强大,也更灵活。
二 常用场景
- 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
- 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
- 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
三 常用语法
位置:
^ 开头
$ 结尾
次数:
* 0或多个
+ 1或多个
? 0或1个
{n} 就是n个
{n,} 至少n个
{n,m} 最少n个,最多m个
通配符:
\d 任意数字
\D 任意非数字
\s 任意空白
\S 任意非空白
. 任意字符(除'\n'外)
组:
(正则) 匹配括号中正则表达式对应的结果,并暂存这个结果。
(?:正则) 匹配括号中正则表达式对应的结果,但不暂存这个结果。
\数字 使用第n个组匹配的结果
上述只是常用的,并不是全部。
四 创建方式
方式一: var regex = new RegExp("正则表达式", "标志");
方式二: var regex = /正则表达式/标志
标志也叫模式,用指定正则表达式匹配的一些规则,如:
g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
五 常用方法
test()
replace()
六 举点例子
1.假设用户名要满足:第一位是字母,只有数字与字母组成,6位。
var name = "abc123";
var reg = /^[a-z][a-z0-9]{5}$/i;
reg.test(name); // 符合返回true ,否则返回false
2.