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 相关文章推荐
基于jquery的获取浏览器窗口大小的代码
Mar 28 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
JavaScript必知必会(七)js对象继承
Jun 08 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
JavaScript实现重力下落与弹性效果的方法分析
Dec 20 Javascript
Vue中对比scoped css和css module的区别
May 17 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
Feb 26 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 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
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
Python+django实现文件上传
2016/01/17 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python实现门限回归方式
2020/02/29 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
python破解同事的压缩包密码
2020/10/14 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
AOP的定义以及作用
2013/09/08 面试题
三个Unix的命令面试题
2015/04/12 面试题
C++程序员求职信
2014/05/07 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
开发房地产协议书
2014/09/14 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
加强党性修养心得体会
2016/01/21 职场文书