javascript---正则式(一)

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

①创建正则表达式

两种创建方式:

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

②测试正则表达式

//在字符串中测试模式匹配,返回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));

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

/*使用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

运行结果:

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

运行结果:

/*使用静态属性*/
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

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

/*使用点元字符*/
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

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
 

/*使用锚元字符匹配*/

var pattern =/^google$/;//^从头开始匹配,$从结尾开始匹配
var str = 'google';
alert(pattern.test(str));//true

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

/*使用或模式匹配*/
var pattern =/google|baidu|bing/;//google|baidu|bing三种其中一种字符串
var str = 'google';
alert(pattern.test(str));//true
时间: 2024-11-03 22:02:01

javascript---正则式(一)的相关文章

正则表达式30分钟入门教程 ——堪称网上能找到的最好的正则式入门教程

本教程堪称网上能找到的最好正则表达式入门教程 原地址:http://www.jb51.net/tools/zhengze.html 本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它. 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有想像中的那么困难.当然,如果你看完了这篇教程之后,发现

在magento中使用正则式

$sqlCondition = "IFNULL(_table_name.value, _table_name_default.value) REGEXP '^[^a-zA-Z]'" $collection->getSelect()->where($sqlCondition) 在magento中使用正则式,布布扣,bubuko.com

javascript正则找script标签, link标签里面的src或者 href属性

1. [代码]javascript 简单的search    <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(?:\s|.)*?)(?:(?:\/\>)|(?:\>\s*?\<\/script\>)) <script  src="sdfsdf/sdfd.js"          type="text/javascript"  /><scr

关于C#判断是否是数字的正则式

有话要说 今天我同事突然让我帮他看个问题,他说想不通为什么数据库中会有不合法的内容,我都已经用正则过滤了,并且在本地调通了的! 我问他是不是你正则有问题,他说没问题啊,前端和后端的正则是一样的,前端我测了的确是可以过滤的!我帮他查看了正则式的确都是一样的,并且在生产环境中的确也是有过滤作用的!但的确数据库中有不合法的内容(至于是什么内容,咱们往下看 ^-^) 判断目标内容是否为数字 我们来说说,判断是否为数字的正则式,或者说判断手机号码的合法性,下面直接给出网上的一段代码(还是有很多同学都用到了

Python使用re模块正则式的预编译及pickle方案

项目上线要求当中有言论和昵称的过滤需求, 客户端使用的是python脚本, python脚本中直接利用re模块来进行正则匹配, 一开始的做法是开启游戏后, 每帧编译2条正则式, 无奈运营需求里面100+条略为复杂的正则式, 一条编译起来在pc上都需要80ms, 造成客户端开启时候的卡顿. 解决方案当然是保存re模块编译的正则式结果, 之后开机直接加载就行, 然而需要注意的是re.compile()返回的_sre.SRE_Pattern对象虽然可以使用pickle保存下来, 但是这只是个假象, 实

Javascript正则控制文本框只能输入整数或浮点数

这篇文章主要介绍Javascript正则如何控制文本框只能输入整数或浮点数,需要的朋友可以参考下 JS部分代码如下: view source print? 1 function CheckInputIntFloat(oInput)  2 {  3 if('' != oInput.value.replace(/\d{1,}\.{0,1}\d{0,}/,''))  4 {  5 oInput.value = oInput.value.match(/\d{1,}\.{0,1}\d{0,}/) == n

javascript 正则匹配 提取全部 preg_match_all matchAll方法

javascript 提取所有的的方法,javascript中没有matchAll这个方法. 用while来实现类似 PHP 中的preg_match_all() :(by default7#zbphp.com) <!DOCTYPE html> <html> <head> <title></title> </head> <body> <select name="AgentIdP" id="

正则式获取特定标识的字符串并替换

正则式获取特定标识的字符串, 待处理字符串:#applyCom# 已经对单号为"#applyNo#"的"#applyType#"事项申请办结确认.请及时登录系统查看处理. 这里使用#*#的形式作为占位符,标识是需要待处理的地方. 使用正则式处理代码: String content = "#applyCom# 已经对单号为"#applyNo#"的"#applyType#"事项申请办结确认.请及时登录系统查看处理.&qu

我也谈javascript正则匹配

一.javascript 正则全局匹配 g 慎用test()方法 来个例子: var a = /^[a-z]+/gi; a.test('bb123'); //true a.lastIndex ; // 0 a.test('bb123') // false a.lastIndex ; // 2 a.test('bb123'); // true 为什么会出现这种一会正确,一会又错误的情况呢?这个就是应为 全局匹配 g 作用所影响的了..嘿嘿 因为多次调用test方法时会从上一次匹配的位置开始匹配,可

字符串转换为日期时间类型及正则式拾遗

菜鸟D最经在给项目写报文接口文件,不要理解错误啊,其实只是拼报文,解析报文.拼报文的过程没有什么难度,此处只需要注意重构就好,报文一般都是有通用的格式的,例如报文是xml格式的,这时候要多对比不同报文的差异,尽量减少重复代码.重构的最大目的在于即使代码发生更改,不必嵌入太深. 好了,废话完了,在解析报文时,遇到了一个“yyyyMMddHHmmss”格式的字符串需要转换为DateTime类型,菜鸟D理所当然的用了Convert.ToDateTime(),由于初时并不知道获取到的是一个怎样的字符串,