什么是正则表达式
由字母、数字、特殊符号构成的描述字符模式的表达式。
功能: 1.模式匹配
2.文本检索
3.替换功能。
定义法方法,有两种,分别为:
- 直接量定义法
var reg = /表达式/修饰符
包含在一对/斜杠之间的字符。表达式不需要加引号,直接书写, 如var reg = /abcd/g
- 构造函数定义法
var reg = new RegExp( 表达式 , 修饰符 );
直接量定义法和构造函数定义法的区别在于:构造函数方法可以对表达式进行动态创建,如var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");name是一个变量,可以动态进行改变。
正则表达式的定义
1、var reg=new RegExp();
2、Var reg = /正则表达式/;、
直接量字符
正则表达式中的所有的字母和数字都是按照字面含义进行匹配的。JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜线(\)作为前缀进行转义。比如
\t代表制表符
\n 代表换行符
\r 代表回车符
元字符和反义
正则表达式语言由两种基本字符类型组成:原义(正常)
文本字符和元字符。元字符使正则表达式具有处理能力。
所谓元字符就是指那些在正则表达式中具有特殊意义的
专用字符,可以用来规定其前导字符(即位于元字符前面的
字符)在目标对象中的出现模式。
常用反义元字符: [ ] {} () ? * + / ^ $ .
使用语法:\元字符
如:\[组合代表普通‘[’; \?组合代表普通的? ;\.代表普通的.
重复
用刚刚学过的正则表达式的语法,可以将两位数描述成/\d\d/,四位数描述成/\d\d\d\d/,但目前为止,还没有一种法法可以用来描述任意多位的数字,或者描述由三个字母和一个数字构成的字符串。这些正则表达式语法中较为复杂的模式都提到了正则表达式中某元素的”重复出现的次数”。
我们在正则模式之后跟随用以指定字符重复的标记。由于某些重复种类非常常用,因此就有一些专门用于表示这种情况的特殊字符。例如:
{n} 匹配前一项n次
如:/a{2}/表示a出现了2次
{n,m} 匹配前一项最少n次,最多m次
如:/a{2,5}/表示a最少2次,最多5次
{n,} 匹配前一项最少n次
如:/a{2,}/表示a最少2次
? 匹配0到1次 {0,1}
如:/a?/表示a出现0到1次
+ 匹配1到多次 {1,}
如:/a+/表示a最少出现了1次
* 匹配0到多次 {0,}
如:/a*/表示a出现了0到多次
字符类
将直接量字符单独放到方括号[]内就组成了字符类。一个字符类可以匹配它所包含的任意字符。因此,正则表达式/[abc]/就和字母”a”,”b”,”c”中的任意一个都匹配。另外可以通过”^”符号来定义否定字符类,它匹配所有不包含在方括号内的字符。定义否定字符类时,将一个”^”符号作为左方括号内的第一个字符,则表达式/[^abc]/匹配的是”a”,”b”,”c”之外的所有字符。字符类可以使用连字符来表示字符范围。要匹配拉丁字母中的小写字母,可以使用/[a-z]/,要匹配拉丁字母表中任意的字母和数字,则使用/[a-z0-0A-Z]/。
由于某些字符类非常常用,因此在JavaScript的正则表达式语法中,使用了这些特殊字符的转义字符来表示它们。例如
. 除了换行符以外任意字符
\w 代表的是字母数字下划线 [a-zA-Z0-9_]
\W 代表的是非字母数字下划线
\d 代表数字 [0-9]
\D 非数字 [^0-9]
\s 空格字符
\S 非空格字符
\b 单词的边界
选择
正则表达式的语法还包括指定选择项、子表达式分组和引用前一子表达式的特殊字符。字符”|”用于分隔供选择的字符。例如
/ab|cd|ef/可以匹配”ab”,也可以匹配”cd”,也可以匹配字符’ef’
/\d{3}|[a-z]{4}/匹配三位数字或者4个小写字母
分组
正则表达式中圆括号()有多种作用,其中一个是把单独的项组合成子表达式,以便像一个独立的单元处理
比如/java(script)?/可以匹配字符串”java”,也可以匹配”javascript”
引用
在正则表达式中,圆括号的另一个作用是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配是,可以从目标中抽出和圆括号中子模式相匹配的部分。
例如,假定我们正在检索的模式是一个或者多个小写字母后面跟随以为或多位数字,则可以使用模式/[a-z]+\d/。但假定我们真正关心的是每个匹配尾部的数字,name如果将模式的数字部分放在括号中(/[a-z]+(\d+)/),就可以从检索到的匹配中抽取数字了。
指定匹配位置
^ 匹配字符串的开头
/^abc/ 表示匹配以abc开头的字符
$ 匹配字符串的末尾
/abc$/ 表示匹配以abc结尾的字符
修饰符
i 忽略大小写 执行不区分大小写的匹配
m 多行匹配 ^匹配一行的开头和字符串的开头,$匹配汉的结束和字符串的结束
g 全文匹配 找到所有的匹配,而不是找到第一个之后就停止。
综合应用
对用户名、手机号码、email、url地址等的检测
JavaScript代码-正则表达式基本语法入门
原文地址:https://www.cnblogs.com/LXbky/p/10218390.html