accp6.0 《使用javascript增强交互效果》学习笔记ch7 正则表达式和表单辅助特效

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;


replace()方法。
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的字符串
语法:
字符串对象.replace(RegExp对象或字符串,"替换的字符串")

如果设置了全文搜索则符合条件的RegExp或字符串都将被替换,否则只替换第一个,返回替换后的字符串,例如:
var str="My little white cat,is really a  very lively cat";
var result =str.replace(/cat/,"dog");
var results=str.replace(/cat/g,"dog");
result的值为My little white dog,is really a very lively cat.
results的值为My little white dog,is really a very lively dog.


split()方法

split()方法将字符串分割成一系列子串并通过一个数组将这一系列子串返回,语法为:

字符串对象.split(分隔符,n);

分隔符可以是字符串,也可以是正则表达式,n为限制输出数组的个数,为可选项,如果不设置n,则返回包含整个字符串的元素数组,例如:

var str="red,blue,green,white";

var result =str.split(",");

var string="";
for(var i=0;i<result.length;i++){

string+=result[i]+"\n";

}
alert(string);

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]


正则表达式的重复字符
{n}                 匹配前一项n次
{n,}                匹配前一项n次,或者多次
{n,m}            匹配前一项至少n次,但是不能超过m次
*                    匹配前一项0次或多次,等价于{0,}
+                   匹配前一项1此或多次,等价于{1,}
?                   匹配前一项0次或一次,也就是说前一项是可选的,等价于{0,1}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章