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 相关文章推荐
新页面打开实际尺寸的图片
Aug 25 Javascript
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
Sep 17 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
解决Layui数据表格的宽高问题
Sep 28 Javascript
微信小程序点击保存图片到本机功能
Dec 13 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 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
mysql+php分页类(已测)
2008/03/31 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python使用MONGODB入门实例
2015/05/11 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python线程join方法原理解析
2020/02/11 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
渗透攻击的测试步骤
2014/06/07 面试题
网页美工求职信范文
2014/04/17 职场文书
销售合作意向书范本
2015/05/08 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书