正在表达式全称(Regular Expression),是描述字符模式的对象。正则表达式在表单校验中很常用。了解正则的基本使用对一个开发人员来说再基础不过了,不管前端还是后端。
构造形式
普通方式语法
var reg = /表达式/附加参数[可选]
表达式为一个字符串或者特殊字符,代表某种规则
参数主要用来扩展表达式的含义
g:全局匹配 i:不区分大小写匹配 m:进行多行匹配
举个栗子:
var reg = /deDreram/; /*表示匹配含有deDream字符串*/ var reg = /deDream/i; /*表示不区分大小写匹配含有deDream字符串*/
RegExp对象方法
方法 | 作用 |
---|---|
compile() | 编译正则表达式 |
exec() | 检索字符串中指定的值,返回找到儿的值,并确定其位置 |
test | 检索字符串中指定的值,返回true或false |
compile语法demo
/* *在字符串中全局搜索子串man,并用person替换。然后通过该方法改变正则表达式,用person替换man或woman */ <script type="text/javascript"> let str1 = "Every man in the world! Every woman on earth!"; pattern = /man/g; str2 = str1.replace(pattern,"person"); document.write(str2); pattern = /(wo)?man/g; pattern.compile(pattern); str2 = str1.replace(pattern,"person"); document,write(str2); </script>
exec语法demo
<script type="text/javascript"> let str = "优秀是一种习惯!"; let reg = new RegExp("习惯","g"); let res; while((res=reg.exec(str))!=null){ document.write(res); document.write(reg.lastIndex); } </script>
两种模式
简单模式
通过普通字符的组合来表达的模式
let reg = /code is cool/;
复合模式
通过含有通配符来表达的模式,匹配范围大,灵活性强,挺迟也是常用的模式
let reg = /a+b?\w/;
正则中方括号的含义
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符 |
[^abc] | 查找任何不再方括号之间的字符 |
[0~9] | 查找任何中0到9的数字 |
[a~z] | 查找任何从a-z的小写字符 |
[A~Z] | 查找任何从A-Z的大写字符 |
正则中常用字符的含义
符号 | 含义 |
---|---|
/..../ | 一个模式的开始和结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\s | 任何空白字符 |
\S | 任何非空白字符 |
\d | 匹配一个数字字符,与[0~9]等价 |
\D | 除了数字之外的任何字符,与[^0~9]等价 |
\w | 匹配一个数字字母下划线,与[A~Za~z0~9]等价 |
\W | 任何非单字字符,与[^A~Za~z0~9]等价 |
. | 除了换行之外的任意字符 |
正则中常用量词的含义
符号 | 描述 | 说明 |
---|---|---|
* | 出现0次或连续多次 | /a*b/可匹配b,aab,aaab... |
+ | 至少出现一次 | /a+b/可匹配ab,aab,aaaab... |
? | 出现0次或一次 | /a[cd]?/可匹配a,,ac,ad |
{n} | 连续出现n次 | /a{3}/相对于aaa |
{n,} | 连续出现至少n次 | /a{3,}/可匹配aaa,aaaaa,.. |
{n,m} | 连续出现至少n次,至多m次 | /ba{1,3}/开可匹配ba,baa,baaa, |
补充
- 上述说明中的的量词,主要作用于符号左边的匹配串,比如a*b,是指a出现的吃素可以是0次也可以是多次。
- a[cd]?中是指cd这个整体中的字符串其中之一至少出现0次或者1次
常用案例
用户名匹配
用户名由英文字母和数字组成的4-16位字符,字母开头
/^[a-zA-Z][a-zA-Z0-9]{3,15}$/
密码匹配
密码由4-10位字符组成
/^[a-zA-Z0-9]{4,10}$/
电话号码匹配
手机号必须为11位数字并且1开头
/^1\d{10}$/
邮箱匹配
邮箱地址必须包含@符号和.符号,并且.符号必须在@之后,邮箱地址以.com或.cn结束
/^\w+@\w+\.\w+[(com)|(cn)]$/
本文在个人博客同步更新