什么是正则表达式(regular expression):是一种字符串匹配的模式,用来检查一个字符串中是否包含指定模式的字符串。
正则表达式的创建
- var reg = /white/g;
- var reg = new RegExp('white',g);
正则表达式的修饰符
g 全局匹配(默认找到第一个就完成匹配了)
i 不区分大小写
-
m 多行匹配
var reg=/^\w+$/; var reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/; var reg = new RegExp(/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/,"g");
/ /正则表达式的创建
^ 字符串开始
$ 字符串结束
\w 任意字母和数字、下划线 1、w、h
- 表示前一个字符出现{1,}一次或多次 123、wwwwhj,sb2b250
@ 普通字符串 123@ wfga@ 250sb@
\w 123@123 wgad@gas g23@123a
[A-Za-z] 123@163.c
{2,3} 123@163.com
(.[a-zA-Z]{2,3})? 123@163.com.cn
-
构造函数 var reg=new RegExp("表达式","附加参数")
var reg=new RegExp("white"); var reg=new RegExp("white","g"); var str=”black white” alert(str.search(reg))
string对象的方法
- match 找到一个或多个正则表达式的匹配
- search 检索与正则表达式相匹配的值
- replace 替换与正则表达式匹配的字符串
- split 把字符串分割为字符串数组
正则表达式符号
-
修饰符
- i 执行对大小写不敏感的匹配
- g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
- m 执行多行匹配
-
方括号用于查找某个范围内的字符:
- [abc] 查找方括号之间的任何字符
- [^abc] 查找任何不在方括号之间的字符
- [0-9] 查找任何从0到9的数字
- [a-z] 查找任何从小写a到小写z的字符
- [A-Z] 查找任何从大写A到大写Z的字符
- [A-z] 查找任何从大写A到小写z的字符
- [adgk] 查找给定集合内的任何字符
- [^adgk] 查找给定集合外的任何字符
- (red|blue|green) 查找任何指定的选项
-
元字符(Metacharacter)是拥有特殊含义的字符:
- /../ 代表一个模式的开始和结束
- ^ 匹配字符串的开始
- $ 匹配字符串的结束
- \s 任何空白字符
- \S 任何非空白字符
- \d 匹配一个数字字符,等价于[0-9]
- \D 除了数字之外的任何字符,等价于[^0-9]
- \w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]
- \W 任何非单字字符,等价于[^A-Za-z0-9]
- . 除了换行符之外的任意字符
-
正则表达式重复字符(量词)
{n} 匹配前一项n次
{n,} 匹配前一项n次,或者多次
{n,m} 匹配前一项至少n次,但是不能超过m次
- 匹配前一项0次或多次,等价于{0,}
- 匹配前一项1次或多次,等价于{1,}
-
?匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}
年龄0-120的正则表达式 /^120$|^((1[0-1]|[1-9])?\d)$/m 用户名正则:/^[a-zA-Z][a-zA-Z0-9]{3,15}$/ 密码正则:/^[a-zA-Z0-9]{4,10}$/ 生日正则:/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/ Email正则:/^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/ 最新身份证正则:/^\d{15}$|^\d{17}([0-9]|X)$/
RegExp对象的属性
- global RegExp对象是否具有标志g,它声明了给定的正则表达式是否执行全局匹配
- ignoreCase RegExp对象是否具有标志i,它声明了给定的正则表达式是否执行对大小写不敏感的匹配
- multilne RegExp对象是否具有标志m,它声明了给定的正则表达式是否执行多行匹配
RegExp对象的方法
- exec() 检索字符中是正则表达式的匹配,返回找到的值,并确定其位置,如果没有发现匹配,则返回null
- test() 检索字符串中指定的值,返回true或false
select 对象常用时间、方法和属性
- 事件 onchange 当改变选项时调用的事件
- 方法 add() 向下拉列表中添加一个选项
- 属性 options[] 返回包含下拉列表中的所有选项的一个数组
- selectedIndex 设置或返回下拉列表中被选项目的索引号
- length 返回下拉列表中的选项的数目
Option对象常用属性
text:设置或返回某个选项的纯文本值
-
value:设置或返回被送往服务器的值
function get(){ var index=document.getElementById("fruit").selectedIndex; var len=document.getElementById("fruit").length; var show=document.getElementById("show"); show.innerHTML="被选选项的索引号为:"+index+"<br/>下拉列表选项数目为:"+len; }
var cityList = new Array();
cityList['河北省']={'石家庄市':['裕华区','藁城区'],'衡水市':['桃城区','枣强县']};
cityList['河南省']={'郑州市':['中原区','二七区'],'洛阳市':['老城区','西工区']};
function setProv(){
var p = document.getElementById('prov');
for(var prov in cityList){
p.add(new Option(prov,prov,null));
}
get();
}
function get(){
var p = document.getElementById('prov');
var pv = p.value;
var c = document.getElementById('city');
c.options.length=0;
var cs = cityList[pv];
for(var city in cs){
c.add(new Option(city,city,null));
}
gets();
}
function gets(){
var p = document.getElementById('prov');//选中的省份
var pv = p.value;//选中项的值
var c = document.getElementById('city');
var cv = c.value;//城市数组的值
var cs = cityList[pv];//省份对应城市的数组
var q = document.getElementById('qu');//获取曲线下拉框元素对象
var qs = cs[cv];//曲线数组
q.options.length = 0;//q.options-获取下拉框的选项数组,length=0清空数组
for(var qu in qs){
q.add(new Option(qs[qu],qs[qu],null))
}
}
window.onload = setProv;
//省份改变触发函数get
function get(){
var p = document.getElementById('prov');
var pv = p.value;//选中项的值
var c = document.getElementById('city');
c.options.length = 0;//初始化城市
switch(pv){
case '河北省':
c.add(new Option('石家庄市','石家庄市'),null);
c.add(new Option('保定市','保定市'),null);
c.add(new Option('衡水市','衡水市'),null);
break;
case '河南省':
c.add(new Option('洛阳市','洛阳市'),null);
c.add(new Option('郑州市','郑州市'),null);
c.add(new Option('驻马店','驻马店'),null);
break;
case '湖南省':
c.add(new Option('长沙市','长沙市'),null);
c.add(new Option('岳阳市','岳阳市'),null);
c.add(new Option('张家界','张家界'),null);
break;
}
gets();
}
function gets(){
var c = document.getElementById('city');
var cv = c.value;
var q = document.getElementById('qu');
q.options.length = 0;
switch(cv){
case '石家庄市':
q.add(new Option('裕华区','裕华区'),null);
q.add(new Option('藁城区','藁城区'),null);
q.add(new Option('正定区','正定区'),null);
break;
case '保定市':
q.add(new Option('满城县','满城县'),null);
q.add(new Option('曲水县','曲水县'),null);
q.add(new Option('涿州市','涿州市'),null);
break;
case '衡水市':
q.add(new Option('桃城区','桃城区'),null);
q.add(new Option('冀州区','冀州区'),null);
q.add(new Option('枣强县','枣强县'),null);
break;
}
}