javascript中expression的用法整理


Posted in Javascript onMay 13, 2014

小哥我最近在学习javaScript, 学到regular expression的时候见知识点有些杂乱,所以特别写篇博客做个总结。

定义

在javascript里定义reg exp有两种方法:

1) 用new exp : var exp1 = new exp("abc");

2) 直接在两个/中间放pattern: var exp2 = /abc/; //注意。。没有双引号哟, 加了就成string了

特殊字符

目测特殊字符和perl的是一样的。。直接拿来用就好

\d Digit characters
\w Alphanumeric characters (“word characters”)
\s Whitespace characters (space, tab, newline, and similar)
\D Characters that are not digits
\W Non-alphanumeric characters
\S Non-whitespace characters
. A period matches all characters except newlines
有个很简单的记的方法:

d = digit 所以是数字

w = word 所以是字母

s = space 所以是空格

所有大写全是反的。。

括号[]

在括号中放pattern 代表只要符合任意字符都为真。 (和java 或者 Perl都是一样一样的)

比如

console.log(/[01]/.test("023424")); // true console.log(/[01]/.test("13424")); // true 
console.log(/[01]/.test("23424")); // false

括号()

表示要符合括号里的全部才会为真

比如

console.log(/[01]/.test("013424")); // true console.log(/[01]/.test("13424")); // false 
console.log(/[01]/.test("230424")); // false 
console.log(/[01]/.test("230142401")); // true

Quantifiers

和java是一样一样一样的。。 这个表很好。。小哥我一直喜欢用

Greedy Reluctant Possessive Meaning
X? X?? X?+ X, once or not at all
X* X*? X*+ X, zero or more times
X+ X+? X++ X, one or more times
X{n} X{n}? X{n}+ X, exactly n times
X{n,} X{n,}? X{n,}+ X, at least n times
X{n,m} X{n,m}? X{n,m}+ X, at least n but not more thanm times

expression object functions

1) test 这个很简单,只用把要test的string放到test(...)里,这个function就会return true/false 代表 match/unmatch

2) exec, 这个function返还null如果没有找到match的string.. 如果找到了就会返还一个array. 这个里边包含按顺序match的string

3) String.replace(expression1, string1) 这个function把expression中match的部分换成string1, string1里可以用之前expression中的parenthesized group

,来替代其中的某个部分。 比如说"co-ol".replace(/[\w]+\-[\w]+/,"$2-$1"); //"ol-co" 一直可以用到$9

4)String.replace(expression, function) 这个是加强版,而且很强大, 可以通过function来定义任何你想要的output。具体用法不在这里一一列出,请参考

点击打开链接

动态生成reg expression
当你想要用在reg exp里的东西只有runtime才知道的时候,这个方法就可以适用
生成reg exp其实只需要用string 建好reg exp的样子, 再用Exp的constructor就可以。 (在文章开头的地方提到过)

例如:

var name = "dear" “oh, my dear”.replace(new Exp(name), "god"); // oh, my god

但是如果名字中有特殊字符可能会用在regular expression的时候, 往往上边的方法会出错。
所以, 在那种情况下,我们可以把input string的每一个字符的前边都加上反斜杠 比如:
var name = df[]vxv; 
var expName = name.replace("/[^/w/s]/g","\\$&"); 
"my name is df[]vxv".replace(new Exp(name), "Bob"); // my name is Bob
Javascript 相关文章推荐
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
js仿百度有啊通栏展示效果实现代码
May 28 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
Aug 08 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
Sep 20 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 #Javascript
js语法学习之判断一个对象是否为数组
May 13 #Javascript
js中定义一个变量并判断其是否为空的方法
May 13 #Javascript
jQuery 计算iframe 窗口大小的方法
May 13 #Javascript
You might like
第五节--克隆
2006/11/16 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
Python 文件操作实现代码
2009/10/07 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
使用python进行拆分大文件的方法
2018/12/10 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
如何卸载python插件
2020/07/08 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
实习协议书范本
2014/04/22 职场文书
党小组评议意见
2015/06/02 职场文书
新生儿未入户证明
2015/06/23 职场文书
董事长新年致辞
2015/07/29 职场文书