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 相关文章推荐
JavaScript For Beginners(转载)
Jan 05 Javascript
js checkbox(复选框) 使用集锦
Apr 28 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
图解js图片轮播效果
Dec 20 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
JavaScript面向对象继承原理与实现方法分析
Aug 09 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
详细分析Node.js 多进程
Jun 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
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
解析php取整的几种方式
2013/06/25 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
php中的异常和错误浅析
2017/05/03 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
js的2种继承方式详解
2014/03/04 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python日期相关操作实例小结
2019/06/24 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
Pygame的程序开始示例代码
2020/05/07 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
夜不归宿检讨书
2014/02/25 职场文书
企业出纳岗位职责
2014/03/12 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
委托书范本
2014/09/13 职场文书
房贷收入证明范本
2015/06/12 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers