regular 正则
express 表达式
global全局
表单验证技术之一:正则表达式
7.1:什么是正则表达式:
正则表达式是一个描述字符模型的对象,它是由一些特殊的符号组成的,这些符号和SQL Server中学过的通配符一样,其组成的字符模式用来匹配各种表达式,
1.定义正则表达式
定义正则表达式有两种构造形式,1:普通方式,2:构造函数
1)普通方式
var reg=/表达式/附加参数
表达式:一个字符串代表了某种规则,其中可以使用某些特殊字符来代表特殊的规则
附加参数:用来扩展表达式的含义,主要有以下三个参数
g:代表可以进行全局匹配
i:代表不区分大小写匹配
m:代表可以进行多行匹配
上面三个参数可以任意组合,代表复合含义,当然也可以不加参数,例如:
var reg=/white/;
var reg=/white/g;
2)构造函数
var reg=new RegExp("表达式",“附加参数”);
其中表达式与附加参数的含义与上面普通方式中的定义的含义相同,例如:
var reg =new RegExp("white");
var reg =new RegExp("white","g");
2.表达式的模式
从规范上讲:表达式的模式分为简单模式和复合模式
1)简单模式
简单模式是指通过普通字符的组合来表达的模式,例如:
var reg=/china/;
var reg=/abc8/;
可见简单模式只能表示具体的匹配,如果匹配一个邮箱或一个电话号码,就不能使用具体的匹配,这时就用到了复合模式
2)复合模式
复合模式是指含有通配符来表达的模式,这里的通配符雨SQL Server 中的通配符相似,例如:
var reg =/^\w+$/;
其中+、\w、^和$都是通配符,代表着特殊的含义,因此复合模式可以表达更为抽象化的规则模式。
RegExp对象
方法
exec 检索字符中是正则表达式的匹配,返回找到的值,并确定其位置
test 检索字符中指定的值,返回true或false
test()方法用于检测一个字符串是否匹配某个模式
正则表达式对象实例.test(字符串);
如果字符串中含有与正则表达式匹配的文本,则返回true,否则返回false,例如:
var str="my cat";
var reg=/cat/;
var result=reg.test(str);
result的值为true;
Javascript除了支持RegExp对象的正则表达式方法外,还支持String对象的正则表达式方法,String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法。
String 对象的方法
方法:
match 找到一个或多个正则表达式的匹配
search 检索与正则表达式相匹配的值
replace 替换与正则表达式匹配的字符串
split 把字符串分割为字符串数组
match()方法可以在字符串内检索指定的值,找到一个或多个正则表达式的匹配,该方法类似于indexOf(),但是indexOf()返回字符串的位置,而不是指定的值
match()语法:
字符串对象.match(searchString或regexpObject)
searchString是要检索的字符串值,regexpObject是规定要匹配模式的RegExp对象。例如:
var str="my cat";
var reg=/cat/;
var result=str.match(reg);
result的值为cat;
split()方法
split()方法将字符串分割成一系列子串并通过一个数组将这一系列子串返回,语法为:
字符串对象.split(分隔符,n);
分隔符可以是字符串,也可以是正则表达式,n为限制输出数组的个数,为可选项,如果不设置n,则返回包含整个字符串的元素数组,例如:
var str="red,blue,green,white";
var result =str.split(",");
string+=result[i]+"\n";
RegExp对象的属性 描述
global RegExp对象是否具有标志g
ignoreCase RegExp对象是否具有标志i
multiline RegExp对象是否具有标志m
global
global属性用于返回正则表达式是否具有标志g,它声明了给定的正则表达式是否执行全局匹配,如果g标志被设置,则该属性为true,否则false
ignoreCase
ignoreCase属性用于返回正则表达式是否具有标志i,它声明了给定的正则表达式是否执行或略大小写的匹配,如果i标志被设置,则该属性为true,否则false
multiline
multiline属性用于返回正则表达式是否具有标志m,它声明了给定的正则表达式是否以多行模式执行模式匹配,如果m标志被设置,则该属性为true,否则false
电子邮箱的正则表达式"reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/"
正则表达式的常用符号:
/.../ 代表一个模式的开始和结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\s 任何空白字符
\S 任何非空白字符
\d 匹配一个数字字符,等价于[0-9]
\D 除了数字之外的任何字符,等价于[^0-9]
\w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]