javascript---正则式(一)

    正则表达式(regular expression)是一个描述字符模式的对象.用来验证客户端的输入数据是否符合既定规则,如我们限制输入字符长度或格式等.因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验.

 

①创建正则表达式

 

两种创建方式:

var box = newRegExp('box','ig');//第一个参数可选字符串,第二个参数模式修饰符
var box =/box/ig;//直接用两个反斜杠

计算机生成了可选文字: 模式修饰符的可选参数参数含义忽略大小写gm全局匹配多行匹配

 

②测试正则表达式

 

//在字符串中测试模式匹配,返回true或false
var pattern = /box/i;
var str = 'box';
alert(pattern.test(str));
 
//使用exec返回匹配数组
var pattern = /box/i;
var str = 'box';
alert(pattern.exec(str));

③使用字符串的正则表达式方法

 

计算机生成了可选文字: String方法match(pattern)replace(pattem,replacement)search(pattern)split(pattem)对象中的正则表达式方法含义返回pattern中的子串或null用replacement替换pattem返回字符串中Pattcm开始位置返回字符串按指定pattem拆分的数组

 

/*使用match方法获取匹配数组*/
var pattern =/box/ig;//全局搜索
var str = 'this is abox!that is a box too!';
alert(str.match(pattern));//box,box,匹配到两个box
alert(str.match(pattern).length);//2,获取数组长度
 
/*使用search来查找匹配数据*/
var pattern =/Box/ig;//全局不区分大小写搜索.注意这里search方法查找到即                       返回,也就是说g可有可无.
var str = 'this is abox!that is a box too!';
alert(str.search(pattern));//10,查找到返回位置,否则返回-1
 
/*使用replace替换匹配到的数据*/
var pattern = /box/ig;
var str = 'this is abox!that is a box too!';
alert(str.replace(pattern,'tom'));//将box替换成tom


运行结果:

 

计算机生成了可选文字: thi吕i日atom!that15atomtoo确定

 

/*使用split拆分字符串数组*/
var pattern=/ /ig;
var str = 'this is abox!that is a box too!';
alert(str.split(pattern));//将空格拆分开组成数组

运行结果:

 

计算机生成了可选文字: thi昌,15,a,box{that,i昌,a,box,too!确定

 

 

计算机生成了可选文字: 属性短名含义input$-一…当前被匹配的字符串lastMatch$&最后一个匹配字符串lastParen$+最后一对圆括号内的匹配子串IcftContcxt$'最后一次匹配前的子串multiline$*用于指定是否所有的表达式都用于多行的布尔值tightC0ntCxt$'在上次匹配之后的子串RegE工p对象的静态属性

 

/*使用静态属性*/
var pattern = /(g)oogle/;
var str = 'this isgoogle!';
pattern.test(str);
alert(RegExp.input);//thisis google!
alert(RegExp.leftContext);//thisis
alert(RegExp.rightContext);//!
alert(RegExp.lastMatch);//google
alert(RegExp.lastParen);//g
alert(RegExp.multiline);//false,IE中是undefined

计算机生成了可选文字: RegElp对象的实例属性属性…含义globalBoolean值,表示g是否已设置}ignoreCaseBoolean值,表示i是否已设置lastlndex整数,代表下次匹配将从哪里字符位置开始multilineBoolean值,表示m是否己设置SollrCC

 

/*使用实例属性*/
var pattern = /google/ig;
alert(pattern.global);//true,是否全局了
alert(pattern.ignoreCase);//true,是否忽略大小写
alert(pattern.multiline);//false,是否支持换行
alert(pattern.lastIndex);//0,下次的匹配位置
alert(pattern.source);//google,正则表达式的源字符串
 

计算机生成了可选文字: 元字符/元符号匹配情况匹配除换行符外的任意字符[a一20一9]匹配括号中的字符集中的任意字符l[Aa一20一9]匹配任意不在括号中的字符集中的字符\d匹配数字\D匹配非数字,同【AO一9]相同\w匹配字母和数字及XWl匹配非字母和数字及字符类:单个字符和数字

 

/*使用点元字符*/
varpattern = /g...gle/;//...匹配三个任意字符
var str = 'gooogle';
alert(pattern.test(str));//true
 
/*使用字符类匹配*/
var pattern =/g[a-zA-Z]*gle/;//[a-z]*表示任意个a-z中的字符,不区分大小写,自己可以尝试将*去掉[]内的修改看看效果
var str = 'google';
alert(pattern.test(str));//true
 
varpattern = /g[^0-9]*gle/;//[^0-9]*表示任意非0~9的字符
var str = 'go0gle';
alert(pattern.test(str));//false
 
var pattern =/[a-z][A-Z]/;//[a-z]或[A-Z]任意多个字符,末尾有或没有"+"无影响
var str = 'gOOGLE';
alert(pattern.test(str));//true
 
/*使用元符号匹配*/
var pattern =/g\w*gle/;//\w*匹配任意多个所有字母数字和_
var str = 'goo_gle';
alert(pattern.test(str));//true
 
var pattern =/\D{7,}/;//\D{7,}匹配至少7个非数字
var str = 'googleJ';
alert(pattern.test(str));//true

计算机生成了可选文字: 元字符/元符号l匹配,情况}匹配nun字符\b、f匹配空格字符匹配进纸字符恤寸匹配换行符匹配回车字符玩}匹配制表符\}匹配空白字符、空格、制表符和换行符S、、、匹配非空白字符字符类:空白字符

 

var pattern =/goo\sgle/;//\s可以匹配到空格
var str = 'goo gle';
alert(pattern.test(str));//true
 
var pattern =/google\b/;//\b可以匹配是否到了边界
var str = 'googlell';
alert(pattern.test(str));//false
 

计算机生成了可选文字: 元字符/元符号字符类:锚字符匹配情况行首匹配行尾匹配只有匹配字符串开始处匹配单词边界,词在「1内时无效匹配非单词边界匹配当前搜索的开始位置匹配字符串结束处或行尾只匹配字符串结束处〈一$一叭一\b一侣一\G一亿一垅

 

/*使用锚元字符匹配*/
 
var pattern =/^google$/;//^从头开始匹配,$从结尾开始匹配
var str = 'google';
alert(pattern.test(str));//true

计算机生成了可选文字: 元字符/元符号匹配情况X9匹配0个或1个x匹配0个或任意多个x匹配至少一个x匹配至少一个(xyz)x毛m,n}匹配最少m个、最多n个x字符类:重复字符

 

/*重复匹配*/
var pattern =/g*gle/;//匹配0~n个
var str ='google';//*,?,+,{n,m}
alert(pattern.test(str));//true

计算机生成了可选文字: 元字符/元符号匹配情况this}wherc}1090匹配this或where或1090中任意一个字符类:替代字符

/*使用或模式匹配*/
var pattern =/google|baidu|bing/;//google|baidu|bing三种其中一种字符串
var str = 'google';
alert(pattern.test(str));//true


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
以下是一个使用正则表达式判断账号密码是否符合要求的例子,其中账号和密码分别要求: - 账号:4-16位字母、数字或下划线 - 密码:8-16位,至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符 ```javascript function validateAccount(account) { const regex = /^[a-zA-Z0-9_]{4,16}$/; return regex.test(account); } function validatePassword(password) { const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$/; return regex.test(password); } ``` 我们可以在注册或登录页面中使用这些验证函数,例如: ```javascript const accountInput = document.getElementById('account'); const passwordInput = document.getElementById('password'); const form = document.getElementById('form'); form.addEventListener('submit', function(e) { e.preventDefault(); const account = accountInput.value; const password = passwordInput.value; if (!validateAccount(account)) { accountInput.setCustomValidity('账号必须由4-16位字母、数字或下划线组成'); return; } if (!validatePassword(password)) { passwordInput.setCustomValidity('密码必须由8-16位字符组成,包含至少一个大写字母、一个小写字母、一个数字和一个特殊字符'); return; } // 提交表单 form.submit(); }); ``` 在这个例子中,我们为表单添加了一个 submit 事件监听器,在表单提交之前对账号和密码进行验证。如果验证不通过,我们使用 setCustomValidity 方法设置一个自定义验证消息,以便在提交表单时显示给用户。如果验证通过,则提交表单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值